MSSQL7+ADO,存储过程如何动态增加参数(100分)

  • 主题发起人 主题发起人 CJ
  • 开始时间 开始时间
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
一个存储过程如下定义:
CREATE PROCEDURE appsp_inplotcalcul
@inplotbill_id varchar(20)
AS...

我使用了TParamenters.Add(way one)和CreateParameter(Way two)
都得到paramenter xxx not suplied错误,就和没有参数一样!后来
改用ADOQuery,问题解决(Way Three),不知道如何动态增加ADOStor-
edProc的参数?记得以前那么干过,好象成功的。

代码如下:

procedure...
var
aspTemp: TADOStoredProc;
aqTemp: TADOQuery;
begin
aspTemp := TADOStoredProc.Create(Application);
try
Screen.Cursor := crHourGlass;
with aspTemp do
begin
Connection := AConnection;
//Way one
Parameters.AddParameter;
Parameters[0].DataType := ftWideString;
Parameters[0].Direction := pdInput;
Parameters[0].Size := 20;
Parameters[0].Value := BillID;

//way Two
Parameters.CreateParameter('@inplotbill_id',ftString,pdInput,20,BillID);
Parameters[0].Value := BillID;

ProcedureName := 'appsp_inplotcalcul';
Prepared := True;
ExecProc;
end;
finally
FreeAndNil(aspTemp);
Screen.Cursor := crDefault;
end;
//Way Three
aqTemp := TADOQuery.Create(Application);
try
aqTemp.Connection := AConnection;
aqTemp.SQL.Clear;
aqTemp.SQL.Add('appsp_inplotcalcul ' + BillID);
aqTemp.ExecSQL;
finally
aqTemp.free;
end;
 
怎么个EXECUTE法?
什么时候用EXECUTE?
 
存储过程是已经在服务器端写好了么?
那就指定TADOStoredProc的名字,然后调用TADOStoredProc.Params.refresh
就可以了
 
应该是TADOStoredProc->Parameters->Refresh();
在BCB里:)
我想在delphi里也一样吧
 
多人接受答案了。
 
后退
顶部