存储过程:
CREATE procedure GetSomeSearch  (@Year int,@Month int , @Comb varchar)   as
 begin
      SELECT T1.Name, T1.zzlx,T1.Unit, T1.LastYearCurMonth, T1.LastYearToMonth,  
      T1.YearCurMonth, T1.YearToMonth, T1.PerValue   FROM dbo.GetSearch(@Year, @Month, @Comb ) T1
 end
GO
  这个表的字段是,名称,类型,单位,去年本月数,去年累计数,今年本月数,今年累计数,百分比,我想通过时间(年月)和类型查询(在程序中用控件ComboBox)老是出现没有定义参数 @Comb这样错误,

解决方案 »

  1.   

    CREATE function GetSearch(@Year Int, @Month Int,@Comb varchar)
    returns @TmTable Table
     ( 
    Name varchar(50), 
    zzlx varchar(50), 
    unit varchar(50), LastYearCurMonth numeric,
     LastYearToMonth numeric, 
    YearCurMonth numeric, 
    YearToMonth numeric,
     PerValue numeric
     )
     as
     begin
     Declare @LastYear int 
    Set @LastYear = @Year - 1 
    Insert @TmTable 
    Select T1.Name, T1.zzlx ,T1.unit,T1.Value, T2.Value, T3.Value, T4.Value, case T2.Value when 0 then 0 else IsNull((T4.Value - T2.Value)*100/T2.Value, 0) end from 
    (SELECT Name,zzlx ,unit,Value FROM GetToal(@LastYear, @Month, @Month,@Comb)) T1,
     (SELECT Name,zzlx , unit,Value FROM GetToal(@LastYear, 1, @Month,@Comb)) T2,
     (SELECT Name, zzlx ,unit, Value FROM GetToal(@Year, @Month, @Month,@Comb)) T3,
     (SELECT Name,zzlx ,unit,Value FROM GetToal(@Year, 1, @Month,@Comb)) T4 
    where T1.Name = T2.Name and T1.Name = T3.Name and T1.Name = T4.Name and T1.zzlx  = T2.zzlx  and T1.zzlx  = T3.zzlx  and T1.zzlx  = T4.zzlx  and T1.unit  = T2.unit  and T1.unit  = T3.unit  and T1.unit  = T4.unit  
    return end //这个是字定义函数
      

  2.   

    CREATE function GetToal(@Year Int, @BeginMonth Int, @EndMonth Int,@Comb varchar) 
    returns 
    @TmTable Table  
      (  
       Name varchar(50),
       zzlx varchar(50),
       unit varchar(50),
       Value numeric)   
      as
     begin  
       insert @TmTable  
        Select XmName ,zz_lx, XmUnit,  IsNull(Sum(Quantity),0) from Crk_sl where Year(XmDate) = @Year and Month(XmDate) >= @BeginMonth and Month(XmDate) <= @EndMonth and zz_lx = @Comb
       group by all  XmName ,XmUnit,zz_lx
        return
     end 
      

  3.   

    我刚开始添加时间查询是正确的,在程序中调用都很正常,但是加上一个类型查询 zz_lx = @Comb,就出现错误了,,请帮帮忙改一下好吗
    var
      varcomb: string;
      mDate: TDateTime;
      mYear, mMonth, mDay:word;
    begin
     mDate := DateTimePicker1.DateTime;
      varComb:=ComboBox1.text;
      decodedate(mDate, mYear, mMonth, mDay);
      ADOQuery1.SQL.Add('Exec GetSomeSearch ' + FloattoStr(mYear) + ',' + FloattoStr(mMonth));
      

  4.   

    ADOQuery1.SQL.Add('Exec GetSomeSearch ' + FloattoStr(mYear) + ',' + FloattoStr(mMonth));没有给@Comb参数赋值
      

  5.   

    ADOQuery1.SQL.Add('Exec GetSomeSearch ' + FloattoStr(mYear) + ',' + FloattoStr(mMonth));如何给@Comb参数赋值????怎么写
      

  6.   

    ADOQuery1.SQL.Add('Exec GetSomeSearch ' + FloattoStr(mYear) + ',' + FloattoStr(mMonth)+ ',''''');