如何在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'
这不起作用。引发相同的错误。请查看我编辑的代码段。您必须像我一样合并变量