在SQL裡執行存儲過程的時候,可以這樣寫:
DECLARE @r_Code int
EXECUTE @r_Code=AddStudent
這樣便得到了返回值。
在Delphi裡用ADOStoredProc控件的時候,怎麼得到返回值呢?
DECLARE @r_Code int
EXECUTE @r_Code=AddStudent
這樣便得到了返回值。
在Delphi裡用ADOStoredProc控件的時候,怎麼得到返回值呢?
data.asp_common.Parameters.Refresh;
data.asp_common.Parameters[1].Value :=username;
data.asp_common.Parameters[2].Value :=ls_str;
data.asp_common.ExecProc;
ls_str:=data.asp_common.Parameters[1].value
备注Parameters[1].Value在过程中为输出参数
TheReturnValue :Integer;
、、、、、(执行存储过程)
TheReturnValue := ADOStoredProc1.Parameters.ParamByName('返回参数字段')->Value;
var
sp : TStoredProc;
begin
sp := TStoredProc.Create(nil);
with sp do
begin
DatabaseName := 'test';
StoredProcName := 'dbwintech1.johnt;1';
ExecProc;
Caption := IntToStr(Params[0].AsInteger);
Free;
end;
end;
begin
Close;
ProcedureName := 'OW_Pro_Orders';
Parameters.Clear;
i:=-1;
Parameters.AddParameter;Inc(i);
Parameters[i].DataType:=ftInteger;
Parameters[i].Name:='@Return_Value';
Parameters[i].Direction:=pdReturnValue; Parameters.AddParameter;Inc(i);
Parameters[i].DataType:=ftstring;
Parameters[i].Name:='@OrdersNo';
Parameters[i].Direction:=pdinput;
Parameters[i].Value:=Trim(Edit_OrdersNo.text); Parameters.AddParameter;Inc(i);
Parameters[i].DataType:=ftString;
Parameters[i].Name:='@Memo';
Parameters[i].Direction:=pdinput;
Parameters[i].Size:=512;
Parameters[i].Value:=Memo.Text;
end; ADOStoredProc1.ExecProc;
if ADOStoredProc.Parameters[0].Value=0 then//这个就是返回值
begin
myStatusBar.Panels[1].Text := '保存成功';
end
except
on E:Exception do
begin
Application.MessageBox(pchar(E.Message),'',mb_ok);
Self.DataModified:=True;
end;
end;
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GOALTER PROCEDURE [pr_jc]
@num_cal_val int,
@res int output/*要有输出值*/
AS
begin
declare @i int
set @res=@num_cal_val
while @num_cal_val>1
begin
set @res=@res*(@num_cal_val-1)
set @num_cal_val=@num_cal_val-1
endendGO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO