我想在Delphi中调用SQL Server上的存储过程,该存储过程中声明了一个@ID的参数,但是下面代码在运行过程中产生错误,说找不到该参数,如果注释掉参数传递语句的话,又说@ID参数没有赋值。怎么回事?
procedure TfrmWizardModel.Button1Click(Sender: TObject);
var
  prc:TADOStoredProc;begin
  prc:=TADOStoredProc.Create(nil);
  prc.Connection :=DataSource.cnn ;
  prc.ProcedureName :='prNameGet';
  prc.Parameters.ParamByName('@ID').Value:=1;
  prc.Open  ;
  showmessage(prc.Fields[1].AsString );
  prc.Close ;
  prc.Free ;
    
end;

解决方案 »

  1.   

    给你一个参考
    procedure TForm1.btnNotSoBadClick(Sender: TObject);
    begin
        with ADOStoredProc1,Parameters do
        begin
            Close;
            ProcedureName   :=  'prNameGet;1';
            Refresh;
            ParamByName('@ID').Value :=  1;
            try
              Open;
            except
              execproc;
            end;
        end;
    end;
      

  2.   

    procedure TfrmWizardModel.Button1Click(Sender: TObject);
    var
      prc:TADOStoredProc;begin
      prc:=TADOStoredProc.Create(nil);
      prc.Connection :=DataSource.cnn ;
      prc.ProcedureName :='prNameGet';prc.Parameters.CreateParameters('@ID', ftString, pdInput, '');//   少了这句!没有创建,具体看一下,可能打错个别字!  prc.Parameters.ParamByName('@ID').Value:=1;
      prc.Open  ;
      showmessage(prc.Fields[1].AsString );
      prc.Close ;
      prc.Free ;
        
    end;