调用Oracle存储过程返回参数的问题
marcw 2008-01-10 03:15:33 需要在D7下用BDE的TStoredProc控件调用 Oracle 下的一个存储过程,存储过程返回一个varchar2型的参数 。
如下面的存储过程:
CREATE OR REPLACE PROCEDURE p_sync_get_change_detail(p_note_sql OUT VARCHAR2) AS
BEGIN
p_note_sql := 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
EXCEPTION
WHEN OTHERS THEN
p_note_sql := '';
END p_sync_get_change_detail;
现在出现的现象是如果 p_note_sql 返回的字符串小于等于 256节符时 D7下调用是正常的,如果 返回字符串大于 256 时则调用存储过程 跳到EXCEPTION节返回空字符串,而在PL/SQL 调用 存储过程返回都是正常的。
D7的调用代码 :
var
ANotSQL: string;
begin
with StoredProc1 do
try
StoredProcName := 'P_SYNC_GET_CHANGE_DETAIL';
Prepare;
ExecProc;
ANotSQL := ParamByName('p_note_sql').AsString;
ShowMessage(ANotSQL);
except
on E: Exception do
begin
Application.MessageBox(PChar('出错!' + e.Message), PChar(Application.Title), MB_OK + MB_ICONSTOP);
end;
end;
end;
这种现象怎么样来处理?