我创建了一个像
这样的动态查询@sQry = 'SELECT * INTO #tablename FROM Table1 '
EXEC(@sQry)
但该表是使用名称tablename创建的。我想在存储过程中创建一个临时表,并在动态查询中创建一个请帮助
CREATE PROCEDURE sp_test()
{
@sQry = 'SELECT * INTO #tablename FROM Table1 '
EXEC(@sQry)
SELECT * FROM #tablename INNER JOIN Table1
}
抱歉我的格式
答案 0 :(得分:1)
EXEC(@script)
,就像EXEC storedproc
一样,引入了另一个范围,在该范围之外,动态查询创建的临时表不可访问。
然后,您的解决方案是在动态脚本之前在存储过程中创建临时表,然后通过动态脚本填充它,然后返回存储过程,使用生成的集合。
以下是一个例子:
...
SELECT TOP (0) * INTO #tablename FROM Table1
@sQry = 'INSERT INTO #tablename SELECT * FROM Table1 '
EXEC(@sQry)
SELECT * FROM #tablename INNER JOIN Table1
...