0

我有一个过程用游标遍历一个表中的记录,然后将插入语句启动到另一个表中。

我在 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这不起作用。

Usingnot in不会插入任何值。当我手动排除故障!= ALL!= Any返回需要从 select 语句插入的正确值时,但是当我在语句中使用 NOT IN 时,它不会插入正确的值。如果我注释掉该行并执行该过程,它会返回大部分正确的值。

Not In ('KNOWN', 'NEW', 'UNKNOWN', 'SOLD') 
--Does not work
4

1 回答 1

0

做这个...

And Status_G != ALL  ('KNOWN', 'NEW', 'UNKNOWN', 'SOLD')

...首先使用显式方法:

And 
(Status_G <> 'KNOWN' AND Status_G <> 'NEW' 
AND Status_G <> 'UNKNOWN' AND Status_G <> 'SOLD')

你也可以这样做:

And 
NOT (Status_G = 'KNOWN' OR Status_G = 'NEW' 
OR Status_G = 'UNKNOWN' OR Status_G = 'SOLD')

如果仍然(非常明确的条件)没有插入正确的值,则代码中的错误不在该行。查看您的 IF 语句的其他条件,或者您的数据

也许

变量 Status_G 有错字?请调试打印 Status_G 的值

于 2012-05-07T03:33:33.310 回答