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

複数の同じバインド引数でEXECUTEIMMEDIATEを使用する

    Oracleには「特別な」動作があります。DynamicSQLで繰り返されるプレースホルダー名ステートメント

    匿名ブロックまたはCALLステートメントでは、名前が等しい場合はバインド値を繰り返す必要はありません。たとえば、この匿名ブロック 動作しています:

    DECLARE
      a NUMBER := 4;
      b NUMBER := 7;
      plsql_block VARCHAR2(100);
    BEGIN
      plsql_block := 'BEGIN calc_stats(:x, :x, :y, :x); END;';
      EXECUTE IMMEDIATE plsql_block USING a, b;  -- calc_stats(a, a, b, a)
    END;
    /
    

    ただし、このEXECUTE IMMEDIATE plsql_block USING a, b; 手順内では機能しません 。



    1. MYSQLでNow()から過去7日間を選択する

    2. dictのPythonリストをjsonのPostgresql配列に変換します

    3. Oracleデータベースのテーブルサイズを確認するためのクエリ

    4. サブクエリに存在しない列でクエリが失敗しないのはなぜですか?