gpt4 book ai didi

SQL Server - STUFF 语句中的变量

转载 作者:行者123 更新时间:2023-12-04 19:09:33 26 4
gpt4 key购买 nike

我目前正在使用 SQL Server 2008 R2,但在使用 STUFF 语句时遇到了困难。

以下语句工作正常:

SET @col_names_2 = STUFF((
SELECT ',' + [COLUMN_NAME]
FROM test.dbo.common_columns
FOR XML PATH('')),1,1,'')

但我想在 STUFF 语句中使用变量,如下所示:
SET @col_names_2 = STUFF((
SELECT ',' + [COLUMN_NAME]
FROM '+@DBO_Database+'.'+@DBO_Schema+'.'+@common_cols+'
FOR XML PATH('')),1,1,'')

我已经尝试了几种方法,例如这样:
SET @col_names_2 = 'STUFF((
SELECT '','' + [COLUMN_NAME]
FROM '+@DBO_Database+'.'+@DBO_Schema+'.'+@common_cols+'
FOR XML PATH('''')),1,1,'''')'

PRINT(@col_names_2)
EXEC(@col_names_2)

PRINT 语句给了我以下看起来不错的结果:
STUFF((
SELECT ',' + [COLUMN_NAME]
FROM test.dbo.common_columns
FOR XML PATH('')),1,1,'')

如何将此 STUFF 语句的输出分配给变量?我已经在批处理语句中使用 SET 语句尝试过它,但这也不起作用。
目前我收到以下错误消息:

关键字“FOR”附近的语法不正确。

我究竟做错了什么?

最佳答案

我想我解决了,特别感谢lad2025的评论。仍然感谢所有回答的人。

以下解决方案对我有用:

    SET @col_names_2 = 'SET @col_names_5 = STUFF((
SELECT '','' + [COLUMN_NAME]
FROM '+@DBO_Database+'.'+@DBO_Schema+'.'+@common_cols+'
FOR XML PATH('''')),1,1,'''')'
PRINT(@col_names_2)
--EXEC(@col_names_2)

EXECUTE sp_executesql @col_names_2, N'@col_names_5 nvarchar(max) OUTPUT', @col_names_5 OUTPUT
PRINT @col_names_5

SET @SQL_5 = 'INSERT INTO [Test].[clean].[cleantable]
SELECT '+@col_names_5+'
FROM [Test].[dbo].[dbotable]'

EXEC(@SQL_5)

关于SQL Server - STUFF 语句中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com