我调用存储过程哪错了?????老说我没有没有输入参数
存储过程如下:
CREATE PROCEDURE proc_sumsell 
      @suma  float output,
    @sumb float output
 AS
  
     set  @suma=(select sum(销售量)  from sell2);
     set  @sumb=(select sum(纯销售额) from sell2);
     if @suma is null   set  @suma=0.0;
     if @sumb is null     set @sumb=0.0;
    return @suma
    return @sumb;
GO我在d6的调下如下:
proc.ProcedureName :='proc_sumsell';
proc.Active :=true; ///老说@suma没有提供参数Edit1.Text :=proc.fieldbyname('suma').AsString ;
Edit2.Text :=proc.fieldbyname('sumb').AsString ;proc.Close ;各位大人我的错在哪里啊

解决方案 »

  1.   

    With Proc do begin
    Close;
    ExecProc;
    Edit1.Text :=Parameters.ParamByName('suma').AsString ;
    Edit2.Text :=Parameters.ParamByName('sumb').AsString ;
    end;
      

  2.   

    ExecProc;
    Edit1.Text :=Parameters.ParamByName('@suma').Value;
    Edit2.Text :=Parameters.ParamByName('@sumb').Value ;//用参数
      

  3.   

    proc.ProcedureName :='proc_sumsell';
    proc.fieldbyname('suma').value:=0;
    proc.fieldbyname('sumb').value:=0;    //先随便赋一个值
    proc.execproc;Edit1.Text :=proc.fieldbyname('suma').AsString ;
    Edit2.Text :=proc.fieldbyname('sumb').AsString ;
      

  4.   

    With Proc do 
    begin
      Close;
      ProcedureName :='proc_sumsell';
      Parameters.Refresh;                         //最好先更新一下参数
      proc.fieldbyname('suma').value:=0;
      proc.fieldbyname('sumb').value:=0;          //输出参数也一定要先赋个值
      ExecProc;
      Edit1.Text :=Parameters.ParamByName('suma').AsString ;
      Edit2.Text :=Parameters.ParamByName('sumb').AsString ;
    end;
      

  5.   

    CREATE PROCEDURE proc_sumsell 
          @suma  float output,
        @sumb float output
     AS
      
         set  @suma=(select sum(销售量)  from sell2);
         set  @sumb=(select sum(纯销售额) from sell2);
         if @suma is null   set  @suma=0.0;
         if @sumb is null     set @sumb=0.0;
      --  return @suma -- this row can drop out
      --  return @sumb; -- this row can drop out
    GO