Delphi XE2 下使用 SQLStoredProc1控件 获取不到存储过程返回的参数数据
如执行下面存储过程 获取不到@otp的数据CREATE PROCEDURE Test2
@para1 INT,
@otp MONEY OUTPUT
AS
BEGIN
SELECT * FROM dbo.TestCheck
SET @otp=100+@para1
END
GOdelphi 下代码unit Unit1;interfaceuses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DBXMSSQL, Data.FMTBcd,
Vcl.StdCtrls, Vcl.Buttons, Data.DB, Data.SqlExpr, Data.Win.ADODB;type
TForm1 = class(TForm)
SQLConnection1: TSQLConnection;
SQLStoredProc1: TSQLStoredProc;
BitBtn1: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
ADOStoredProc1: TADOStoredProc;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
SQLStoredProc1.ParamByName('@para1').Value:=Edit2.Text;
SQLStoredProc1.;
Edit1.Text:= SQLStoredProc1.ParamByName('@otp').Value;
end;end.
如执行下面存储过程 获取不到@otp的数据CREATE PROCEDURE Test2
@para1 INT,
@otp MONEY OUTPUT
AS
BEGIN
SELECT * FROM dbo.TestCheck
SET @otp=100+@para1
END
GOdelphi 下代码unit Unit1;interfaceuses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DBXMSSQL, Data.FMTBcd,
Vcl.StdCtrls, Vcl.Buttons, Data.DB, Data.SqlExpr, Data.Win.ADODB;type
TForm1 = class(TForm)
SQLConnection1: TSQLConnection;
SQLStoredProc1: TSQLStoredProc;
BitBtn1: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
ADOStoredProc1: TADOStoredProc;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
SQLStoredProc1.ParamByName('@para1').Value:=Edit2.Text;
SQLStoredProc1.;
Edit1.Text:= SQLStoredProc1.ParamByName('@otp').Value;
end;end.
SQLStoredProc1.StoredProcName := 'Test2';
SQLStoredProc1.Params.ParamByName('@para1').Value := Edit2.Text; //整数
SQLStoredProc1.Params.ParamByName('@otp').Value := null;
SQLStoredProc1.ExecProc;
Edit1.Text := SQLStoredProc1.Params.ParamByName('@otp').Value;
Result := Parameters.ParamByName('@RETURN_VALUE').Value;//@RETURN_VALUE参数的Direction为pdReturnValue
for i := Low(AParamName) to High(AParamName) do
if Parameters.ParamByName(AParamName[i]).Direction = pdInputOutput then
AParamValue[i] := Parameters.ParamByName(AParamName[i]).Value;
我这代码你看下 应该就懂了 delphi还可以获取到proc自身返回值(成功0;不成功非0)
然后你要制定参数返回的 需要有个direction 为 pdinputout的。
我指的是DBX控件中的SQLStoredProc1这个