Sql Oracle APEX-基于页面项的动态where子句
是否有一种基于页面项值构造动态where子句的方法 可能是什么时候的用例Sql Oracle APEX-基于页面项的动态where子句,sql,oracle,plsql,oracle-apex,Sql,Oracle,Plsql,Oracle Apex,是否有一种基于页面项值构造动态where子句的方法 可能是什么时候的用例 SELECT a.ID, a.NAME FROM Table1 a WHERE CASE WHEN mypackage.get_type_id(TO_NUMBER(:P2_TEST_TYPE))='TYPE1' OR mypackage.get_type_id(TO_NUMBER(:P2_TEST_TYPE))='TYPE2' THEN NOT EXISTS (
SELECT a.ID, a.NAME
FROM Table1 a
WHERE
CASE WHEN mypackage.get_type_id(TO_NUMBER(:P2_TEST_TYPE))='TYPE1' OR
mypackage.get_type_id(TO_NUMBER(:P2_TEST_TYPE))='TYPE2' THEN
NOT EXISTS (
SELECT 1
FROM Table2 b
WHERE b.id = a.id
AND b.type_id = :P2_TEST_TYPE
AND mypackage.get_category_id(b.parent_id) <> mypackage.get_category_id(:P2_PARENT_ID)
AND b.status = 'NEW'
)
WHEN mypackage.get_type_id(TO_NUMBER(:P2_TEST_TYPE))='TYPE3' THEN
NOT EXISTS (
SELECT 1
FROM Table2 b
WHERE b.id = a.id
AND b.type_id = :P2_TEST_TYPE
AND b.status = 'NEW'
)
END
我怎么能做那样的事呢?也许是这样吧 不要使用CASE,而是使用两个SELECT语句的并集,但它们每个都有自己的附加条件,即您要放入CASE中的条件
你能帮我回答另一个问题吗?
SELECT a.ID, a.NAME
FROM Table1 a
WHERE NOT EXISTS
(SELECT 1
FROM Table2 b
WHERE b.id = a.id
AND b.type_id = :P2_TEST_TYPE
AND mypackage.get_category_id(b.parent_id) <> mypackage.get_category_id(:P2_PARENT_ID)
AND b.status = 'NEW'
AND mypackage.get_type_id(TO_NUMBER(:P2_TEST_TYPE)) IN ('TYPE1', 'TYPE2')
UNION ALL
SELECT 1
FROM Table2 b
WHERE b.id = a.id
AND b.type_id = :P2_TEST_TYPE
AND b.status = 'NEW'
AND mypackage.get_type_id(TO_NUMBER(:P2_TEST_TYPE)) = 'TYPE3'
);