Delphi中使用Stored Procedure 的 parameter 設定方式及回傳值取得

有關Delphi 的語法, 程式, 等
回覆文章
頭像
tim
文章: 1380
註冊時間: 2008年 11月 26日, 00:49

Delphi中使用Stored Procedure 的 parameter 設定方式及回傳值取得

文章 tim »

可以參考 http://delphi.ktop.com.tw/topic.asp?TOPIC_ID=43526

其中動態給定 stored procedure name 並自行產生參數的作法:

代碼: 選擇全部

 ADOStoredProc1.ProcedureName := 'sp_update';
 ADOStoredProc1.Parameters.Refresh;
注意 Parameters.Refresh 用法, 會去更新及建立對應的 parameters, 而且第一個參數一般是回傳值, 取得的方法如下:

代碼: 選擇全部

 ret := VarToStr(ADOStoredProc1.Parameters[0].value);  
如此一來就可以順利取得 stored procedure 的 return value 了!

MSSQL 2000 + Delphi 7

代碼: 選擇全部

Stored Procedure:
CREATE PROCEDURE [dbo].[sp_update]
@id varchar(7), @name varchar(50)
AS
 declare @rc int
 update uutable set name=@name where [id]=@id
 select @rc = @@ROWCOUNT
 if (@rc = 0 )
   return(1)  -- no row has been changed , return 1 (false)
 else
   return(0)  -- return 0 (success)
GO
DELPHI 中的 ADOStoredProc 的用法:

代碼: 選擇全部

procedure Tform1.Button1Click(Sender: TObject);
var
 ret: string;
begin
 ADOStoredProc1.ProcedureName := 'sp_update';
 ADOStoredProc1.Parameters.Refresh;
 ADOStoredProc1.Parameters.ParamByName('@id').value := '0000001';
 ADOStoredProc1.Parameters.ParamByName('@name').value := '12221';
 ADOStoredProc1.ExecProc;
 ret := VarToStr(ADOStoredProc1.Parameters[0].value);  // 第 0個參數一定是回傳值!! (就是 stored procedure 的 return 值)
 if ret='0' then
   ShowMessage('success')
 else
   ShowMessage('no row has been changed!');
end;
多多留言, 整理文章, 把經驗累積下來.....
回覆文章