2012-05-07 6 views
0

カーソルを使用して1つのテーブルのレコードをループし、別のテーブルに挿入ステートメントを開始するプロシージャがあります。<>または!= insideステートメントのみを使用できます

私は、If文でNOT INが機能しないこと!= 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を使用しても値は挿入されません。手動でトラブルシューティングを行うと、または!= Anyがselect文から挿入する必要がある正しい値を返しますが、ステートメント内でNOT INを使用すると、正しい値が挿入されません。その行をコメントアウトしてプロシージャを実行すると、ほとんどの正しい値が返されます。その場合は

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

:また、これを行うことができます

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

:最初の明示的なアプローチを使用して

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

あなたが使用している '!= ALL'構文は見たことがありません。 'Status_G!= 'KNOWN' AND St​​atus_G!= 'NEW''など、' and'ステートメントを展開するとどうなりますか?適切な「END IF」をやっていますか?あなたの 'INSERT'ステートメントはプロシージャの外で動作しますか? – Marc

+0

それは同じですasa <> – user1307149

+0

それはどういう意味ですか?あなたはそれのドキュメントに私を指摘できますか? – Marc

答えて

0

これを行います...

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

...まだ(非常に明示的な条件)は正しい値を挿入しませんが、コード内のエラーはその行にありません。他のあなたのIF文の条件、または多分あなたのデータ

それとも

に見変数Status_Gは誤植がありますか? Status_Gの値を出力してデバッグしてください

関連する問題