sql - 如何在 XML Path 查询 SQL 中使用标量变量?
问题描述
我想将表名@Table_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'
解决方案
语句SELECT * FROM @Table_Name
正确执行,when@Table_Name
是表变量。在您的情况下,您需要使用动态语句并修复语句中的语法错误((
在第一个之前附加SELECT
):
DECLARE @TableName sysname = N'YourTable'
DECLARE @sql nvarchar(max)
SET @sql = CONCAT(
'SELECT STUFF((SELECT * FROM ',
QUOTENAME(@TableName),
' FOR XML PATH('''')), 1, 1, N'''') FROM SomeOtherTable'
)
PRINT @sql
EXEC sp_executesql @sql
推荐阅读
- connection-string - 无法从 Blazor 预渲染应用程序中的 appsettings.json 读取配置
- api - 何时在 API 响应中使用 Location http 标头与 Link http 标头?
- css - 仅限 CSS 的角标
- javascript - 防止 Apexcharts 在加载时滚动到页面顶部
- reactjs - 如何在 React 中映射 JSON 对象数组?
- rest - 特殊的 RESTful 路由
- python - Django 中介模型
- angular - 跨 matTabGroup 中的多个选项卡的角度应用 matSort
- html - 有没有办法将多个 CSS 文件添加到 HTML 文档中?
- excel - Excel - 动态组合来自多个表的数据