动态执行Sql语句创建临时表提示对象名无效

Create PROCEDURE Test
AS
    DECLARE @strSQL nvarchar(500)
    
    SET @strSQL = 'select mobileno,regtime into #tmpTable from textmessage'
    EXEC SP_EXECUTESQL @strSQL

    --PRINT @strSQL
    Select * FROM #tmpTable
GO

上边存储过程执行的时候老是提示:

对象名 '#tmpTable' 无效。

将@strSQL语句输出再在查询分析器中执行却没有问题,其原因是临时表有作用域的,上边临时表的作用域只在exec内部有效!解决方法:改用全局临时表!

Create PROCEDURE Test
AS
    DECLARE @strSQL nvarchar(500)

    SET @strSQL = 'select mobileno,regtime into ##tmpTable from textmessage'
    EXEC SP_EXECUTESQL @strSQL

    --PRINT @strSQL
    Select * FROM ##tmpTable
    IF object_id('tempdb..##tmpTable') is not null Drop Table ##tmpTable
GO


评论: 0 | 引用: 0 | 查看次数: 7410
发表评论
登录后再发表评论!