Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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
如何在XML路径查询SQL中使用标量变量?_Sql_Sql Server_Tsql - Fatal编程技术网

如何在XML路径查询SQL中使用标量变量?

如何在XML路径查询SQL中使用标量变量?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想将表名作为字符串传递到标量变量@table\u name。但我得到的错误是: 必须声明表变量@table_Name 如何实现同样的目标?下面是我的代码片段: Declare @Table_Name as varchar(200); SET @Table_Name = 'Table_name' SET @sql = '(SELECT' + STUFF((SELECT * FROM @Table_Name

我想将表名作为字符串传递到标量变量
@table\u name
。但我得到的错误是:

必须声明表变量@table_Name

如何实现同样的目标?下面是我的代码片段:

Declare @Table_Name as varchar(200);
SET @Table_Name = 'Table_name'
SET @sql = '(SELECT' + STUFF((SELECT *
                                FROM @Table_Name
                                FOR XML PATH('')), 1, 1, '' )
               + ' FROM SomeOtherTable'
Declare @Table_Name as varchar(200);
Declare @sql as nvarchar(max);
SET @Table_Name = 'Table_name'
SET @sql = 'select * into ##TempTable from '+ @Table_Name

SET @sql = '(SELECT' + STUFF((SELECT *
                                FROM ##TempTable
                                FOR XML PATH('')), 1, 1, '' )
               + ' FROM SomeOtherTable'

您应该在使用变量之前声明它

DECLARE @table_name SYSNAME
SET @sql = '(SELECT STUFF((SELECT *
                            FROM '+ @Table_Name + 
                            ' FOR XML PATH('')), 1, 1, '' )'
           + ' FROM SomeOtherTable';

@Table\u Name
是表变量时,语句
SELECT*FROM@Table\u Name
正确执行。在您的情况下,您需要使用动态语句并修复语句中的语法错误(附加
在第一个
选择之前):


因此,我使用用户提供的输入创建了一个临时表,并在查询中使用了该临时表

Declare @Table_Name as varchar(200);
SET @Table_Name = 'Table_name'
SET @sql = '(SELECT' + STUFF((SELECT *
                                FROM @Table_Name
                                FOR XML PATH('')), 1, 1, '' )
               + ' FROM SomeOtherTable'
Declare @Table_Name as varchar(200);
Declare @sql as nvarchar(max);
SET @Table_Name = 'Table_name'
SET @sql = 'select * into ##TempTable from '+ @Table_Name

SET @sql = '(SELECT' + STUFF((SELECT *
                                FROM ##TempTable
                                FOR XML PATH('')), 1, 1, '' )
               + ' FROM SomeOtherTable'

这不起作用。引发相同的错误。请查看我编辑的代码段。您必须像我一样合并变量