我正在尝试编译以下PL / SQL:
PROCEDURE SP(INPUT1 IN VARCHAR2)
V_BOL BOOLEAN := FALSE;
BEGIN
IF (INPUT1 = 'XYZ')
THEN V_BOL := TRUE;
END IF;
UPDATE T1 /* Line 17 */
SET T1.C1 = (
SELECT CASE
WHEN (V_BOL AND T1.N1 BETWEEN 1 AND 10) THEN 'J' /* Line 20 */
END
FROM DUAL)
...
但是出现以下错误:
Error(17,9): PL/SQL: SQL Statement ignored
Error(20,18): PL/SQL: ORA-00920: invalid relational operator
答案 0 :(得分:5)
您不能在SQL语句中使用BOOLEAN
变量(除非Oracle在最新版本中进行了更改),即**V_BOL**
无效。
UPDATE T1 SET T1.C1 =
CASE WHEN (**V_BOL** AND T1.N1 BETWEEN 1 AND 10) THEN 'J' else null end
使用简单的SQL数据类型,即INTEGER(0/1)