您好,请问动态设置 TADOStoredProc 的有关问题,谢谢(20分)

  • 主题发起人 驿路的梦
  • 开始时间
驿

驿路的梦

Unregistered / Unconfirmed
GUEST, unregistred user!
您好,动态设置 TADOStoredProc 后,其参数为何无效 ?
如下:
with TADOStoredProc.Create(Nil) do
begin
Try
Connection := ADOConnection1 ;
ProcedureName := 'Sp_getNo;1' ;
Parameters.AddParameter.Name := '@one' ;
Parameters.AddParameter.DataType := ftString ;
Parameters.AddParameter.Direction := pdInput ;
Parameters.AddParameter.Precision := 0 ;
Parameters.AddParameter.Attributes := [paNullable] ;
Parameters.AddParameter.Name := '@two' ;
Parameters.AddParameter.DataType := ftFloat ;
Parameters.AddParameter.Direction := pdOutput ;
Parameters.AddParameter.Precision := 15 ;
Parameters.AddParameter.Attributes := [paNullable] ;
Parameters.ParamByName('@one').Value := '1234' ;
ExecProc ;
ShowMessage(FloatToStr(Parameters.ParamByName('@two').Value)) ;
Finally
Free ;
End;
运行是提示参数没有正确装载
而静态调用
with ADOStoredProc1 do
begin
Parameters.ParamByName('@one').Value := '1234' ;
ExecProc ;
ShowMessage(FloatToStr(Parameters.ParamByName('@two').Value)) ;
end ;

是对的

请教动态设置时参数应该怎样传入 ? 谢谢
 
with TADOStoredProc.Create(Nil) do
begin
Try
[red]paramcheck:=false;[/red]
Connection := ADOConnection1 ;
ProcedureName := 'Sp_getNo;1' ;
Parameters.AddParameter;
Parameters.items[0].Name := '@one' ;
Parameters.items[0].DataType := ftString ;
Parameters.items[0].Direction := pdInput ;
Parameters.items[0].Precision := 0 ;
Parameters.items[0].Attributes := [paNullable] ;
Parameters.AddParameter
Parameters.items[1].Name := '@two' ;
Parameters.items[1]..DataType := ftFloat ;
Parameters.items[1].Direction := pdOutput ;
Parameters.items[1].Precision := 15 ;
Parameters.items[1].Attributes := [paNullable] ;
Parameters.ParamByName('@one').Value := '1234' ;
ExecProc ;
ShowMessage(FloatToStr(Parameters.ParamByName('@two').Value)) ;
Finally
Free ;
End;
 
windbell: 原来这样 ,谢谢您 :)
 
顶部