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それは機能しないことに注意してください。

使用not 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 に答える