Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从动态SQL创建动态表_Sql_Sql Server - Fatal编程技术网

从动态SQL创建动态表

从动态SQL创建动态表,sql,sql-server,Sql,Sql Server,首先,我使用的是ms SQL server 2012。我正在尝试使用一个基于字符串值的表,该字符串值作为字符串传递到过程中。我发现在编写查询时不能使用字符串作为表名,所以我正试图找到一种解决方法。我唯一的线索是使用动态SQL,我也不知道如何使用它。以下是我所拥有的: DECLARE @q AS NVARCHAR(MAX) SET @q = 'SELECT * FROM ' + @tableName DECLARE #tableCopy AS EXECUTE(@q) 如何将已执行的@q放入#ta

首先,我使用的是ms SQL server 2012。我正在尝试使用一个基于字符串值的表,该字符串值作为字符串传递到过程中。我发现在编写查询时不能使用字符串作为表名,所以我正试图找到一种解决方法。我唯一的线索是使用动态SQL,我也不知道如何使用它。以下是我所拥有的:

DECLARE @q AS NVARCHAR(MAX)
SET @q = 'SELECT * FROM ' + @tableName
DECLARE #tableCopy AS EXECUTE(@q)

如何将已执行的@q放入#tableCopy?或者,当我只知道表名为字符串时,有没有更好的方法访问我的表?

您可以创建临时表,然后在动态sql中插入到该表中。这里有一个例子:

不幸的是,您需要知道模式。以下操作不起作用:


@HLGEM我需要使用一个表,其中一个存储值是JSON。因此,我需要创建一个临时表,将JSON值与其余数据一起作为一个表进行查看。这是原型代码,但很好知道。谢谢你,先生,你告诉了我动态sql的方法,我不会忘记它。
declare @query varchar(max) = 
'select * into #t from table'
EXEC(@query) 
select * FROM #t