其中動態給定 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;