查询条件动态指定,即:select field1,field2,field3 into #temp from testtable where 1=1 +动态传入存储过程判断条件(如: and field1=2)请问怎么解决,我用exec(查询语句变量),然后再用:select * from #temp 但这时 #temp 已经无效了,真是头痛,还请指点一二.

解决方案 »

  1.   

    在存储过程里select * from #temp
    不过这时要保证这个select语句是存储过程中唯一或者至少是第一个被执行的语句
      

  2.   

    或者,换种方式;你可以写返回值为tables的function
    具体的可以看帮助的示例;很清楚的。
      

  3.   

    CREATE FUNCTION SalesByStore (@storeid varchar(30))
    RETURNS TABLE
    AS
    if @storeid = ''
    RETURN (SELECT title, qty
          FROM sales s, titles t
          WHERE s.stor_id = @storeid and
          t.title_id = s.title_id)
    else if ...
      

  4.   

    不知道你用临时表干什么exec('
    select field1,field2,field3 from testtable where '+queryStr+'
    ')
      

  5.   

    存储过程就直接可以返回你select 的结果集,临时表的确多余