这是我存储过程中的一段代码
set @wheresql=' and p1.status=1'
SET @strSql=N'SELECT top 200 productid,productname into #t FROM cc_product p1 INNER JOIN dbo.CC_ProductClass p2 ON p2.ClassId=p1.ClassId WHERE 1=1 '+@wheresql+' order by p1.updatetime DESC'
EXEC(@strSql)
SELECT * FROM #t 为什么下面SELECT * FROM #t ,提示#t不存在?

解决方案 »

  1.   

    create table #t(productid varchar(100),productname varchar(100))
    set @wheresql=' and p1.status=1'
    SET @strSql=N'SELECT top 200 productid,productname  FROM cc_product p1 INNER JOIN dbo.CC_ProductClass p2 ON p2.ClassId=p1.ClassId WHERE 1=1 '+@wheresql+' order by p1.updatetime DESC'
    insert #t EXEC(@strSql)
    SELECT * FROM #t 
      

  2.   

    有什么好的解决方法?
    因为wheresql是多个不同的条件生成的
    我把生成后的sql语句拿到数据库中查询一下,得到的结果是我想要的,但是在存储过程中就遇到这个问题?
      

  3.   

    参考2楼水哥的 把EXEC的结果放入临时表 
    insert into #t exec(@strsql)
      

  4.   

    先在外部定义好临时表,然后在@strSql里操作就能用了。