Delphi中使用Stored Procedure 的 parameter 設定方式及回傳值取得
發表於 : 2008年 11月 28日, 10:35
可以參考 http://delphi.ktop.com.tw/topic.asp?TOPIC_ID=43526
其中動態給定 stored procedure name 並自行產生參數的作法:
注意 Parameters.Refresh 用法, 會去更新及建立對應的 parameters, 而且第一個參數一般是回傳值, 取得的方法如下:
如此一來就可以順利取得 stored procedure 的 return value 了!
MSSQL 2000 + Delphi 7
DELPHI 中的 ADOStoredProc 的用法:
其中動態給定 stored procedure name 並自行產生參數的作法:
代碼: 選擇全部
ADOStoredProc1.ProcedureName := 'sp_update';
ADOStoredProc1.Parameters.Refresh;
代碼: 選擇全部
ret := VarToStr(ADOStoredProc1.Parameters[0].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
代碼: 選擇全部
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;