aql 过程如下:
CREATE proc yj01
(
@YGNm char (10)= '%',
@ygno char(4)='%'
)
as
set nocount on
select * from mid_ygdb where ygnm=@ygnm and ygno=@ygno
GO程序如下:
procedure TForm1.FormShow(Sender: TObject);
begin
ADODataSet1.Close;
ADODataSet1.CommandType:=cmdStoredproc;
ADODataSet1.CommandText:='yj1';
ADODataSet1.Open;
end;
如何将过程参数指定出来? 麻烦将上面过程调用写完整了?多谢了!
CREATE proc yj01
(
@YGNm char (10)= '%',
@ygno char(4)='%'
)
as
set nocount on
select * from mid_ygdb where ygnm=@ygnm and ygno=@ygno
GO程序如下:
procedure TForm1.FormShow(Sender: TObject);
begin
ADODataSet1.Close;
ADODataSet1.CommandType:=cmdStoredproc;
ADODataSet1.CommandText:='yj1';
ADODataSet1.Open;
end;
如何将过程参数指定出来? 麻烦将上面过程调用写完整了?多谢了!
begin
Close;
sql.clear;
sql.add('select * from mid_ygdb where ygnm=:ygnm and ygno=:ygno');
Parameters.ParamValues['ygnm']:= 'A';
Parameters.ParamValues['ygno']:= 'B';
open;
end;
begin
ADOQuery.Close;
ADOQuery.sql.clear;
ADOQuery.sql.text := 'exec yj01 '''+参数一+''','''+参数二+'''';
ADOQuery.Exec;
end;
ADODataSet1.Parameters.Add;
ADODataSet1.Parameters[0].Direction := pdReturnValue;
ADODataSet1.Parameters[0].DataType := ftInteger;
ADODataSet1.Parameters[0].Name := '@RETURN_VALUE';
ADODataSet1.Parameters[0].Size := 0;
ADODataSet1.Parameters[0].Precision := 10; ADODataSet1.Parameters.Add;
ADODataSet1.Parameters[1].Direction := pdInput;
ADODataSet1.Parameters[1].DataType := ftString;
ADODataSet1.Parameters[1].Name := ' @YGNm ;
ADODataSet1.Parameters[1].Size := 10;
ADODataSet1.Parameters[1].Precision := 10; ADODataSet1.Parameters.Add;
ADODataSet1.Parameters[2].Direction := pdInput;
ADODataSet1.Parameters[2].DataType := ftString;
ADODataSet1.Parameters[2].Name := '@ygno;
ADODataSet1.Parameters[2].Size := 6;
ADODataSet1.Parameters[2].Precision := 10;
ADODataSet1.Parameters[1].Value := YGNm;
ADODataSet1.Parameters[2].Value := ygno;
ADODataSet1.Execute;
Var
Str:String;
begin
Str := Format('select * from mid_ygdb where ygnm=%s and ygno=%s',[QuotedStr(ygnm),QuotedStr(ygno)]);
Close;
sql.clear;
sql.add(Str);
open;
end;
,用参数也是可以的