我在oracle数据库中有一个程序,看起来像
create or replace PACKAGE MY_PACKAGE AS
TYPE MY_RECORD IS RECORD
(
first_name abc.first_name%TYPE,
middle_name abc.middle_name%TYPE,
last_name abc.last_name%TYPE
);
TYPE MY_RECORD_REF IS REF CURSOR RETURN MY_RECORD;
PROCEDURE getDetails(
last_name IN OUT VARCHAR2,
V_MY_RECORD_REF OUT MY_RECORD_REF);
END MY_PACKAGE;
我想调用存储过程来获取数据并显示它们但不能这样做。
有人可以帮忙吗?
提前致谢。
答案 0 :(得分:1)
该记录可以为您提供结果集的定义。使用打包的类型来定义调用过程时使用的局部变量。
declare
l_result_Set MY_PACKAGE.MY_RECORD_REF;
l_record MY_PACKAGE.MY_RECORD;
l_name abc.last_name%TYPE ;
begin
-- get the results
MY_PACKAGE.getDetails(
l_name
, l_result_Set );
-- now read them
loop
fetch l_result_Set into l_record;
exit when l_result_Set%notfound;
-- do stuff here
end loop;
end;
“你知道如何在java中做同样的事情吗?”
Ref Cursor是JDBC结果集。 Andrej Koelewijn有一个简短的例子in this blog post。请注意使用Oracle库数据类型OracleTypes.CURSOR
。 JDBC Deve指南中介绍了ResultSet的完整扫描。 Find out more.