木子屋 Dnawo's BLOG

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

👤 dnawo 📅 2008-12-23 👁 8076 👍 0 💬 0 🔄 本站原创
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)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 图片不存在对页面加载速度的影响 下一篇 → 编码的邪恶: 复制与粘帖