我想使用
VARCHAR2
运算符比较值(IN
与列表中的值之一)。例如,值是 A,列表值是 B 和 C。值是
有效的简单静态代码:
IF 'A' NOT IN ('B', 'C') THEN
DBMS_OUTPUT.PUT_LINE('Not');
ELSE
DBMS_OUTPUT.PUT_LINE('In');
END IF;
非工作动态代码:
IF 'A' NOT IN ( SELECT COLUMN_VALUE FROM APEX_STRING.SPLIT('B:C', ':') ) THEN
DBMS_OUTPUT.PUT_LINE('Not');
ELSE
DBMS_OUTPUT.PUT_LINE('In');
END IF;
出现错误:
Error at line 39/48: ORA-06550: line 20, column 67:
PLS-00103: Encountered the symbol "(" when expecting one of the following:
. ) , @ with <an identifier>
<a double-quoted delimited-identifier> group having intersect
minus partition start subpartition union where connect sample
The symbol "having" was substituted for "(" to continue.
不明白哪里出错了。在 SQL 查询中,使用
IN
运算符的类似代码可以工作。
不能在运算符 IN 中使用 SELECT。您必须在执行查询 INTO 变量之前并在 IF TEST 中使用 after 。 例如使用计数功能:
SELECT count(*)
INTO my_var
FROM APEX_STRING.SPLIT('B:C', ':')
WHERE COLUMN_VALUE = 'A';
IF my_var > 0 THEN
DBMS_OUTPUT.PUT_LINE('Not');
ELSE
DBMS_OUTPUT.PUT_LINE('In');
END IF;
谢谢你。