调用Oracle存储过程返回参数的问题(100分)

  • 主题发起人 主题发起人 kings_delphi
  • 开始时间 开始时间
K

kings_delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
需要在D7下用BDE的TStoredProc控件调用 Oracle 下的一个存储过程,存储过程返回一个varchar2型的参数 。<br><br>如下面的存储过程:<br>CREATE OR REPLACE PROCEDURE p_sync_get_change_detail(p_note_sql OUT VARCHAR2) AS<br>BEGIN<br>&nbsp; p_note_sql := 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';<br>EXCEPTION<br>&nbsp; WHEN OTHERS THEN<br>&nbsp; &nbsp; p_note_sql := '';<br>END p_sync_get_change_detail;<br><br>现在出现的现象是如果 p_note_sql 返回的字符串小于等于 256节符时 D7下调用是正常的,如果 返回字符串大于 256 时则调用存储过程 跳到EXCEPTION节返回空字符串,而在PL/SQL 调用 存储过程返回都是正常的。<br><br>D7的调用代码 :<br>var<br>&nbsp; ANotSQL: string;<br>begin<br>&nbsp; with StoredProc1 do<br>&nbsp; try<br>&nbsp; &nbsp; StoredProcName := 'P_SYNC_GET_CHANGE_DETAIL';<br>&nbsp; &nbsp; Prepare;<br>&nbsp; &nbsp; ExecProc;<br>&nbsp; &nbsp; ANotSQL := ParamByName('p_note_sql').AsString;<br>&nbsp; &nbsp; ShowMessage(ANotSQL);<br>&nbsp; except<br>&nbsp; &nbsp; on E: Exception do<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; Application.MessageBox(PChar('出错!' + e.Message), PChar(Application.Title), MB_OK + MB_ICONSTOP);<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>end;<br>这种现象怎么样来处理?
 
可以用ansistring或widwstring来替代string类型。
 
后退
顶部