sql >> データベース >  >> RDS >> Oracle

Oracle クエリがコンパイルされない

    問題は、 EXECUTE IMMEDIATE でしようとしている動的ステートメントであると思います PL/SQL文ではなく、SQL文です。そして INTO は SQL ではなく、PL/SQL です。

    動的な SQL を実行できます バインド変数を 1 つだけ含むステートメントを作成し、INTO を配置します。 動的ステートメントの外側。これは、動的 SQL を実行するときにサポートされます ステートメント:

    execute immediately 'select CASE WHEN EXISTS (samplecode =:varSamplecode and auditflag =0 and ' || varFilterString || ') then 1 else 0 end from DUAL'into varResult using IN varSampleCode;   

    または、動的な PL/SQL を実行できます 匿名ブロック:

    execute immediately 'begin select CASE WHEN EXISTS (samplecode =:varSamplecode および auditflag =0 のサンプルから 1 を選択し、' || varFilterString || ') then 1 else 0 end into :varresult from DUAL; end;'using IN varSampleCode, OUT varResult;  

    今回は INTO BEGIN そして END; 現在、動的な PL/SQL を実行しています .

    あなたのユースケースでは、動的 SQL を実行する最初のオプションをお勧めします INTO を配置する ステートメント文字列。




    1. MySQLでのLEFT()関数のしくみ

    2. 垂直出力を使用するようにMariaDBを設定する方法

    3. MySQLトリガーの例外/失敗情報をテーブルまたは変数に保存する方法

    4. 動作が異なる同じMaven