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

関数からフェッチして、レコードに参照カーソルを返します

    カーソルがREFCURSORから行をフェッチしているはずだと思われるかもしれません。そうではありません。 REFCURSORはそれ自体がカーソルであり、別のカーソルを使用してそこから選択する必要はありません。

    現在のカーソルが実行しているのは、関数呼び出しの結果を含む、単一の列を持つ単一の行をフェッチすることです。これはrecord_cursorです record_nameではありません 、タイプの不一致が発生します。

    あなたが本当にやりたいことは次のようなものだと思います:

    declare
      symbol_cursor  package_name.record_cursor;
      symbol_record  package_name.record_name;
    begin
      symbol_cursor := package_name.function_name('argument');
      loop
        fetch symbol_cursor into symbol_record;
        exit when symbol_cursor%notfound;
    
        -- Do something with each record here, e.g.:
        dbms_output.put_line( symbol_record.field_a );
    
      end loop;
    
      CLOSE symbol_cursor;
    
    end;
    


    1. Postgresタイムスタンプ

    2. PostgreSQLでの累積合計の計算

    3. 一括収集せずにオブジェクトのコレクションを含むOracleオブジェクトを選択する

    4. SQLServerで正方形を計算する方法