prereq_list というテーブルを返すストアド プロシージャを含む Oracle パッケージがあります。返されるデータ型の宣言は次のとおりです。
TYPE prereq_list IS TABLE OF VW_PREREQ_SVC_CD%ROWTYPE;
ストアド プロシージャの署名は次のようになります。
PROCEDURE GET_PREREQS (
site_id_in IN VARCHAR2,
rate_group_in IN VARCHAR2,
service_code_in IN VARCHAR2,
prereq_list_out out prereq_list);
次のようなRubyとOCI8を使用して、このストアドプロシージャを呼び出そうとしています:
cursor = Warehouse::Base.connection.raw_connection.parse("BEGIN codekeeper.get_prereqs(:site, :rate_grp, :svc_code, :prereqs); END;")
cursor.bind_param(':site', '9')
cursor.bind_param(':rate_grp','3990003')
cursor.bind_param(':svc_code','RPSTARZ')
cursor.bind_param(':prereqs', nil, OCI8::Cursor )
cursor.exec()
results_cursor = cursor[':prereqs']
cursor.close
while row = results_cursor.fetch()
puts row.join(',')
end
results_cursor.close
私の基本的なアプローチが健全であることはわかっています。出力変数を単純な文字列または数値に置き換えると、出力されたものは何でも取得できます。それは本当に私が必要とするものではありません。真のカーソルまたは少なくともハッシュの配列のいずれかを返すことができる必要があります。