Произошла ли какая-либо ошибка при попытке вызова внешней функции C из запроса Oracle? Я использую Oracle 10g и получаю эту ошибку каждый раз, когда я пытаюсь вызвать одну из двух функций в библиотеке. Вызов другой функции возвращает значение каждый раз, хотя функция, которая работает, является автономной, не вызывает никаких функций OCI *.ORA-28579: ошибка сети при обратном вызове от внешнего агента процедуры
Вот хранимая процедура, которая используется для вызова ошибочного кода C:
CREATE OR REPLACE PROCEDURE index_procedure(text in clob, tokens in out nocopy clob, location_needed in boolean)
as language c
name "c_index_proc"
library lexer_lib
with context
parameters
(
context,
text,
tokens,
location_needed
);
Любой помощь будет оценена. Все, что я нашел в этом сообщении об ошибке, говорит о том, что необходимо предпринять следующие действия: обратиться в службу поддержки Oracle.
Редактирование: Я сузил его до такой степени, что я знаю, что в libclntsh есть segfault, после того как я вызываю OCILobTrim (чтобы усечь его до 0 длины) на клонах токенов. Вот код, который я использовал для вызова этой процедуры.
declare text CLOB; tokens CLOB;
begin
dbms_lob.createtemporary(tokens, TRUE);
dbms_lob.append(tokens, 'token');
dbms_lob.createtemporary(text, TRUE);
dbms_lob.append(text, '<BODY>Test Document</BODY>');
index_procedure(text, tokens, FALSE);
dbms_output.put_line(tokens);
end;
/
Есть что-то неправильно в этой настройке, которая может вызвать проблемы OCILobTrim?
Можете ли вы показать образец? даже я столкнулся с проблемой и ошибкой ORA-28579: ошибка сети во время обратного вызова от внешнего агента процедуры. –