我有一个 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
我知道我的基本方法是合理的。如果我用一个简单的字符串或数字替换输出变量,我可以得到任何输出。不过,这真的不是我需要的。我需要能够返回一个真正的游标或至少一个哈希数组。