1
我在远程数据库中创建了一个名为getEmployee(id in varchar)
的oracle函数,我试图从我的本地数据库使用数据库链接调用它。从Java调用oracle函数
在getEmployee
,我试图返回游标与员工数据。(表:雇员(ID,姓名,地址)):
FUNCTION LocalGetEmployee(ID in varchar2)
RETURN Schema.SomeRefCursor AS OUTPUT Schema.SomeRefCursor;
BEGIN
OUTPUT := [email protected](ID) ;
RETURN OUTPUT;
END;
但是,当我从Java调用代码这个功能,它给出了ORA-24338: statement handle not executed
错误。这里是我的遥控功能:
CREATE OR REPLACE FUNCTION GETEMPLOYEE (IN_ID IN VARCHAR2)
RETURN TYPES.RECORD_CURSOR AS
RESULT_CURSOR TYPES.RECORD_CURSOR;
BEGIN
OPEN RESULT_CURSOR FOR
SELECT ID, NAME, ADDRESS
FROM EMPLOYEE
WHERE ID = IN_ID;
RETURN RESULT_CURSOR;
END GETEMPLOYEE;
这是我的Java代码:
String fncall = "{call ? := schema.LocalGetEmployee(?)}";
CallableStatement stm = con.prepareCall(fncall);
stm.registerOutParameter(1, Types.CURSOR);
stm.setInt(2, 123);
stm.execute();
ResultSet rs = (ResultSet) stm.getObject(1);
while(rs.next()) {
......
}
你能发布你的Java代码吗? – 2011-05-06 23:45:58
@Trevor将Java代码添加到我原来的帖子中。 – 2011-05-07 00:06:53
ORA错误意味着你有数据库的麻烦 - 在函数运行之前不值得看Java。 – 2011-05-07 00:44:08