我在SQL2000中定义了存储过程,如何能在Delphi 中将参数传递给它?(100分)

  • 主题发起人 主题发起人 iamhwj
  • 开始时间 开始时间
I

iamhwj

Unregistered / Unconfirmed
GUEST, unregistred user!
例如:
在sql 中的存储过程:
declare @myname
select * from xxx where name=@myname

在Delphi 中如何将myname 传递到此过程中?
我试过 parameters.parambyname('myname'):='tom'
但提示 :没有找到 myname 这个参数
 
用查询组件最方便:Query1.SQL.TExt := 'Exec MyProc ''tom''';Query1.ExecSQL;
 
parameters.parambyname('@myname').value:='tom'
 
parameters.parambyname('@myname').value:='tom'
 
同意楼上的,但是建议用query组件
 
1.数据控件.fechparams;
2.数据控件.parameters.parambyname('myname').value :='tom';
 
在存储过程中,把参数@Myname放到存储过程名称的后面,调用时
直接用Execute 存储过程名 @myname
 
我用的storeproc组件,上面几位大侠回答的方法我都试过了,不行谁有更好的方法?
 
用TADOStoredProc,下面是例子:
procedure TForm1.Button3Click(Sender: TObject);
begin
adosp1.ProcedureName:='u_update';
with ADOSP1.Parameters.AddParameter do
begin
DataType := ftInteger;
Direction := pdInput;
Name := '@uid';
end;
with ADOSP1.Parameters.AddParameter do
begin
DataType := ftString;
Direction := pdInput;
Name := '@u_name';
end;
adosp1.Parameters.ParamByName('@uid').Value:=strtoint(e1.Text);
adosp1.Parameters.ParamByName('@u_name').Value:=e2.Text;
adosp1.ExecProc;
end;
 
把storeproc先删掉,然后重新加一个storeproc,试试怎么样,再不星的话,不要用参数名
传参数,用参数的索引值吧
 
用ADOSTOREPROC
parameters.value:=var

我是这样用的!
 
后退
顶部