У меня есть пакет Oracle с хранимой процедурой, которая возвращает таблицу с именем prereq_list. Объявление возвращаемого типа данных:
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
Я знаю, что мой основной подход верен. Если я заменю выходную переменную простой строкой или числом, я смогу получить все, что выводится. Но это действительно не то, что мне нужно. Мне нужно вернуть либо настоящий курсор, либо хотя бы массив хешей.