有人在尝试从 Oracle 查询调用外部 C 函数时看到此错误吗?我使用的是 Oracle 10g,每次尝试调用库中的两个函数之一时都会出现此错误。对另一个函数的调用每次都返回正常,尽管工作的函数都是独立的,没有调用任何 OCI* 函数。
这是用于调用失败的 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 客户支持。
编辑:我已经将其范围缩小到我知道在标记 clob 上调用 OCIlobTrim(将其截断为 0 长度)后 libclntsh 中存在段错误。这是我用来调用此过程的代码。
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 问题的问题?