需要在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;
这种现象怎么样来处理?