如何在动态查询字符串中插入#tablename

时间:2011-04-26 09:25:23

标签: sql

我创建了一个像

这样的动态查询
@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
}

抱歉我的格式

1 个答案:

答案 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
...