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

Oracle SQLDeveloper1.5でのOracleSys_refcursorの印刷

    参照カーソルをループして、その中の各行について、個々のフィールドを出力する必要があります。更新されたバージョンでは、カーソルを別の参照カーソルではなく、ローカルスカラー変数にフェッチする必要があります:

    set serveroutput on;
    declare
      result sys_refcursor;
      lsn number; -- guessing the data type
    begin
      emp.emp360_utils.GET_EMPLOYEEs(222334,result); 
      loop
        fetch result into lsn; -- and other columns if needed
        exit when result%notfound;
        dbms_output.put_line(lsn);
      end loop;
    end;
    /
    

    lsnを推測しました は数値ですが、そうでない場合は、それを正しい型として宣言してください。カーソルが複数の列を返す場合は、それらの1つだけを表示している場合でも、それぞれのローカル変数を宣言し、それらすべてをそれらにフェッチする必要があります。

    表示したいだけの場合は、代わりにバインド変数を使用してこれを行うことができます(現在のバージョンでチェックインして1.5.0に戻します):

    variable result refcursor
    
    begin
      emp.emp360_utils.GET_EMPLOYEEs(222334, :result); 
    end;
    /
    
    print result
    

    variableに注意してください。 コマンド ではありません declareで ブロック;これはSQLDeveloperコマンドであり、PL/SQLコマンドではありません。 printと同様 ただし、どちらもSQL*Plusのドキュメントにのみ記載されています。また、:resultの先頭のコロンにも注意してください ブロック内。これは、ローカルPL/SQL変数ではなくバインド変数であることを示します。



    1. postgreSQLで配列内部インデックスにアクセスする方法は?

    2. SQLステートメントにテーブルが存在する場合は、Oracleデータベースからテーブルを削除します

    3. 配列内のすべての値がデータベース列に存在するかどうかを確認します

    4. C#Windowsアプリケーションアクセスデータベースデータは閉じても保持されません