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

動的SQLクエリ結果を取得するためのplsqlブロック

    これ:

    dbms_output.put_line(sql_str);
    

    ...出力を出力しているのは正しい動作です。 DECLAREの部分は、匿名関数を実行しようとしている印象を与えてくれますよね?

    EXECUTEIMMEDIATELYを使用したことはありません。次の場合のみです。

    FUNCTION MY_FUNCTION()
    RETURN SYS_REFCURSOR
    
    L_CURSOR SYS_REFCURSOR;
    L_QUERY  VARCHAR2(5000) DEFAULT 'SELECT ...';
    
    BEGIN
    
      OPEN L_CURSOR FOR L_QUERY;
      RETURN L_CURSOR;
    
    END;
    

    動的SQLにバインド変数を含める場合:

    FUNCTION MY_FUNCTION()
    RETURN SYS_REFCURSOR
    
    L_CURSOR SYS_REFCURSOR;
    L_QUERY  VARCHAR2(5000) DEFAULT 'SELECT ...';
    
    BEGIN
    
      OPEN L_CURSOR FOR L_QUERY
       USING bind_var1;
      RETURN L_CURSOR;
    
    END;
    


    1. OOPMySQLiでループなしですべてのオブジェクトを取得します

    2. MySQL Djangoモデルのブールフィールド?

    3. mimeタイプの画像を取得する

    4. SQLServer2012の拡張イベントに対する重要な変更