【发布时间】:2012-05-07 03:02:34
【问题描述】:
我有一个过程,可以用游标遍历一个表中的记录,然后向另一个表发起插入语句。
我在 If 语句 != ALL 中收到此错误
Begin
If V_Item = V_Item_G
And V_New_Part Is Null
And (V_Delete_G Is Null or V_Delete_G != 'Y')
And Status_G != ALL ('KNOWN', 'NEW', 'UNKNOWN', 'SOLD')
THEN INSERT INTO PART
VALUES ( V_Item, V_New_Part);
End IF;
End;
注意NOT IN 不起作用。
使用not in 不会插入任何值。当我手动排除故障时,!= ALL 或 != Any 返回我需要从 select 语句中插入的正确值,但是当我在语句中使用 NOT IN 时,它不会插入正确的值。如果我注释掉该行并执行该过程,它会返回大部分正确的值。
Not In ('KNOWN', 'NEW', 'UNKNOWN', 'SOLD')
--Does not work
【问题讨论】:
-
我从未见过您使用的
!=ALL语法。当您扩展and语句时会发生什么,即Status_G != 'KNOWN' AND Status_G != 'NEW'等?你在做正确的END IF吗?您的INSERT语句是否在程序之外起作用? -
这是什么意思?你能指点我的文档吗?
-
@Marc:
!= ALL(或者<> ALL)是自 1986 年以来的标准 SQL 语法。你没有看到它表明它不经常使用,但它是有效的。但是,!= ALL等价于NOT IN。IN等价于= ANY。 -
Status_G 是否包含任何 NULL 值??
标签: sql oracle stored-procedures if-statement plsql