begin
 with adoStoredProc1 do
procedure TForm1.Button2Click(Sender: TObject);
begin
 with adoStoredProc1 do
begin
adoStoredProc1.Prepared:=true;
  adoStoredProc1.Parameters.ParamByName('@id_1').value:=dbedit1.text;
  adoStoredProc1.Parameters.ParamByName(' @name_2').value:=dbedit2.text;
  adoStoredProc1.Parameters.ParamByName(' @sex_3').value:=dbedit3.text;
 adoStoredProc1.Parameters.ParamByName(' @birthday_4').value:=dbedit4.text;
   adoStoredProc1.Parameters.ParamByName(' @zy_5').value:=dbedit5.text;
  adoStoredProc1.Parameters.ParamByName(' @xi_6').value:=dbedit6.text;
 adoStoredProc1.Parameters.ParamByName(' @tel_7').value:=dbedit7.text;
 adoStoredProc1.Parameters.ParamByName(' @cj_8').value:=dbedit8.text;
   adoStoredProc1.Parameters.ParamByName('@tcj_9').value:=dbedit9.text;
   adoStoredProc1.ExecProc;
 adoStoredProc1.Prepared:=false;
一点button键,就出现adoStoredProc1:ParamByName'@id_1'not found
我在存储过程里面定义了这个变量的嘛

解决方案 »

  1.   

    例:
    CREATE procedure gc_treesee  
    @date1 char(6),  
    @date2 char(6)  
    as    
    declare @bm varchar(20)  
    declare @num1 float  
    declare @num2 float  
     则AS前的两个变量为参数,而后面的就不是参数。
    引用参数时不加@就可以了。
      

  2.   

    procedure TForm1.Button2Click(Sender: TObject);
    begin
     with adoStoredProc1 do
     begin
       close;
       Parameters.ParamByName('@id_1').value:=dbedit1.text;
       Parameters.ParamByName(' @name_2').value:=dbedit2.text;
       Parameters.ParamByName(' @sex_3').value:=dbedit3.text;
       Parameters.ParamByName(' @birthday_4').value:=dbedit4.text;
       Parameters.ParamByName(' @zy_5').value:=dbedit5.text;
       Parameters.ParamByName(' @xi_6').value:=dbedit6.text;
       Parameters.ParamByName(' @tel_7').value:=dbedit7.text;
       Parameters.ParamByName(' @cj_8').value:=dbedit8.text;
       Parameters.ParamByName('@tcj_9').value:=dbedit9.text;
       ExecProc;
     end;
    end;