需要在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;
这种现象怎么样来处理?
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;
这种现象怎么样来处理?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货