Я создал функцию оракула под названием getEmployee(id in varchar)
в моей удаленной базе данных, и я пытаюсь вызвать ее из локальной базы данных, используя ссылку на базу данных.
В getEmployee
я пытаюсь вернуть курсор с данными сотрудника (таблица: Employee (ID, Name, address)):
FUNCTION LocalGetEmployee(ID in varchar2)
RETURN Schema.SomeRefCursor AS OUTPUT Schema.SomeRefCursor;
BEGIN
OUTPUT := schema.getEmployee@dblink(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()) {
......
}