根据输入的条件,生成动态sql字符串语句,在这里就可以动态决定where的条件,
然后用exec执行sql字符串语句就完事.
根本不用临时表,自己查下动态语句的帖子,多得很.
楼主问题属于简单问题.

解决方案 »

  1.   


    打个比方:
    create proc pr_test
    @table varchar(10),
    @where varchar(100)
    as
    begin
      exec('select * from '+@table+' where '+@where)
    end
    go
      

  2.   

    算了,给个例子:DECLARE @SQLSTR NVARCHAR(4000)IF(@DAY > 1)--@day是输入参数
      SET @SQLSTR = 'SELECT * FROM A WHERE A.ID > 100
    ELSE
        SET @SQLSTR = 'SELECT * FROM A WHERE A.ID < 100
    EXEC @SQLSTR
    GO搞定!
      

  3.   

    我试了2位的方法,但是还是有写问题..能按照我上面的样子 改一下么?
    ------------------------------------------------------
    if(@grpname<>'')
    begin
    INSERT into #QeryData
    SELECT  io,agentgrp,AnswerFlag,QueueDuration,WaitTime,StartRingTime,TalkDuration,
     InboundCallTime,
    left(convert(varchar, @currFrom,120),16)+' - '+ left(convert(varchar, @currEnd,120),16) 
                   AS DATE_PART
    FROM calllog
    WHERE (io=0) and InboundCallTime>=@currFrom and InboundCallTime<@currEnd and agentgrp=@grpname order by InboundCallTime
    end
    if(@grpname='')
    begin
    INSERT into #QeryData
    SELECT  io,agentgrp,AnswerFlag,QueueDuration,WaitTime,StartRingTime,TalkDuration,
     InboundCallTime,
    left(convert(varchar, @currFrom,120),16)+' - '+ left(convert(varchar, @currEnd,120),16) 
                   AS DATE_PART
    FROM calllog
    WHERE (io=0) and InboundCallTime>=@currFrom and InboundCallTime<@currEnd order by InboundCallTime
    end
    set @currFrom = @currEnd  --进入下一阶段
    ---------------------------------------------------------------------我是有点理解了,但是还是不知道怎么实现...
      

  4.   

    比如.我如果选了全部.即走if(@grpname='') 的...他会报:过程 'ces' 需要参数 '@grpname',但未提供该参数。但是我调试 每个参数都有获得值..我选择其中一个就是走 if(@grpname <>'') 的  数据正常,但是拉出来的数据都是选择了全部的...我调试看了.每个参数都有值包括 agentgrp=@grpname   @grpname传到页面的都可以看到..不知道为什么.