oracle pl/sql 代码 包头:
create or replace package pkg_test is
type t_test IS RECORD(
list_id number,
dept varchar2,
name varchar2,
age number,
level number,
address varchar2); type tab_test is table of t_test index by binary_integer; procedure p_get_data_test(dept in varchar2,
age in number,
enter_date in varchar2,
end_date in varchar2,
report_data out tab_test); end pkg_test; 包体:
create or replace package pkg_test is
procedure p_get_data_test(dept in varchar2,
age in number,
enter_date in varchar2,
end_date in varchar2,
report_data out tab_test) as
cursor c_get_data is
select list_id, '', name, age, -1, address
from t_user
where 1= 1;
m_t_test t_test;
m_tab_test tab_test;
m_dept varchar2(20);
m_level number := -1;
m_list_id number := 0;
m_count number := 0;
begin
open c_get_data;
fetch c_get_data into m_t_test;
exit when c_get_data%notfound;
loop
m_list_id := m_t_test.list_id;
m_dept := p_get_dept(m_list_id);
m_level := p_get_level(m_list_id);
m_t_test.dept := m_dept;
m_t_test.level := m_level;
m_tab_test(m_count) := m_t_test;
m_count := m_count + 1;
end loop;
close c_get_data;
end p_get_data_test;
end pkg_test;
请教 在java中该如何调用这个方法并获取返回值呢?
create or replace package pkg_test is
type t_test IS RECORD(
list_id number,
dept varchar2,
name varchar2,
age number,
level number,
address varchar2); type tab_test is table of t_test index by binary_integer; procedure p_get_data_test(dept in varchar2,
age in number,
enter_date in varchar2,
end_date in varchar2,
report_data out tab_test); end pkg_test; 包体:
create or replace package pkg_test is
procedure p_get_data_test(dept in varchar2,
age in number,
enter_date in varchar2,
end_date in varchar2,
report_data out tab_test) as
cursor c_get_data is
select list_id, '', name, age, -1, address
from t_user
where 1= 1;
m_t_test t_test;
m_tab_test tab_test;
m_dept varchar2(20);
m_level number := -1;
m_list_id number := 0;
m_count number := 0;
begin
open c_get_data;
fetch c_get_data into m_t_test;
exit when c_get_data%notfound;
loop
m_list_id := m_t_test.list_id;
m_dept := p_get_dept(m_list_id);
m_level := p_get_level(m_list_id);
m_t_test.dept := m_dept;
m_t_test.level := m_level;
m_tab_test(m_count) := m_t_test;
m_count := m_count + 1;
end loop;
close c_get_data;
end p_get_data_test;
end pkg_test;
请教 在java中该如何调用这个方法并获取返回值呢?
stmt =(CallableStatement )conn.prepareCall("call pkg_test.p_get_data_test(?, ?, ?, ?, ?)");
stmt.setString(1, "1011001");
stmt.setInt(2, 25);
stmt.setString(3, "2009-09-01");
stmt.setString(4, "2009-09-30");
stmt.registerOutParameter(4,OracleTypes.CURSOR);
stmt.execute();
ResultSet Rs=(ResultSet)stmt.getObject(4);
程序报错 哪位大大给指点指点,非常感谢!
这个是手误 真实的程序没有这个错误
为什么要转成 ResultSet 呢,stmt.getObject()出来的不可能是 ResultSet 吧
最根本的问题是
在java中如何获取返回值为table of record 的存储过程的结果
向上转型和向下转型 java继承 java的基础知识需要加强
呵呵 这个是获取select的结果集 但是我是要获取存储过程的返回值
是这么写吗?
如果是 那就是参数写错了
这样试试