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