--函数不支持动态SQL,用存储过程

解决方案 »

  1.   

    CREATE PROC FAVGLJ
    @ADKind VARCHAR(10)=NULL,
    @TabName VARCHAR(10)=NULL, 
    @Field VARCHAR(10)=NULL, 
    @Condition VARCHAR(10)=NULL, 
    @Flag INTEGER==NULL,
    @RETURN FLOAT output
    AS
    BEGIN
      declare @fValue float
      declare @strSQL VARCHAR
      declare @iNIAN VARCHAR
      declare @iYUE VARCHAR
      declare @iRI VARCHAR
      declare @iJZ VARCHAR(10)
      SET @iNIAN=(select NIAN  from pub_var where DKind=@ADKind)
      SET @iYUE=(select YUE from pub_var where DKind=@ADKind)
      SET @iRI=(select RI from pub_var where DKind=@ADKind)
      SET @iJZ=(select JZ  from pub_var where DKind=@ADKind)
      --单机组月累计,条件为NIAN,YUE,RI,JZ  本年本月累计到目前日期为止
      if @Flag=1 begin
        SET @strSQL='select @tfValue=avg('+@Field+') from '+@TabName+' where JZ='+@iJZ+' and NIAN='+cast(@iNIAN AS VARCHAR)+'
                    and YUE='+cast(@iYUE AS VARCHAR)+' and RI>=1 and RI<='+cast(@iRI AS VARCHAR)+' and '+@Condition+'GROUP BY NIAN,YUE,JZ'
        --EXECUTE('update tmp_value set value=select avg('+@Field+') from '+@TabName+' where JZ='+@iJZ+' and NIAN='+@iNIAN+'
        --            and YUE='+@iYUE+' and RI>=1 and RI<='+@iRI+' and '+@Condition+'GROUP BY NIAN,YUE,JZ')
        
        EXEC  sp_executesql 
                        @strSQL, 
                        N'@tfValue int OUTPUT', 
                        @tfValue=@fValue OUTPUT 
      end
      select @RETURN=@fValue
    END
      

  2.   

    比如我需要实现 dbo.FAVGLJ1('BB','DATA_JZ_RI','GE','GE>0',1) from AAA,用存储过程就不行啊
      

  3.   

    比如我需要实现 select dbo.FAVGLJ1('BB','DATA_JZ_RI','GE','GE>0',1) from AAA,用存储过程就不行啊
      

  4.   

    如果是 select * from dbo.函数 where ... 是可以的那么用存储过程怎么实现类似的功能?
    select * from dbo.存储过程 where ...????
    好象不可以吧