gpt4 book ai didi

sql-server - 我们可以在 select 语句中使用 EXEC()

转载 作者:行者123 更新时间:2023-12-04 06:19:35 24 4
gpt4 key购买 nike

/* Loop through tempTotal to update the result table */

SET @RowCount = 1
SELECT @MaxRows = COUNT(*) FROM #TempTotal
WHILE @RowCount <= @MaxRows
BEGIN

SELECT @RowCount = @RowCount + 1, @DeviceId = DeviceId, @SourceName = SourceName, @hrs = Hrs
FROM #TempTotal
WHERE rownum = @RowCount

EXEC ('UPDATE #TempInputSourceRpt SET [' + @SourceName + '] = ' + @Hrs + 'WHERE DeviceId = ' + @DeviceId)

END

我想转换上述逻辑以消除循环并提高性能

这样的事情会非常有效
SELECT EXEC('UPDATE #TempInputSourceRpt SET [' + SourceName + '] = ' + Hrs + 'WHERE     DeviceId = ' + DeviceId) FROM #TempTotal

但 SQL 不允许在 SELECT 中使用 EXEC。

任何想法/建议?

最佳答案

DECLARE @SQL Varchar(max)
SET @SQL = 'Use MyDatabase'

SELECT @SQL = SQL +
'UPDATE #TempInputSourceRpt SET [' +
SourceName + '] = ' +
Hrs +
'WHERE DeviceId = ' + DeviceId + CHAR(10) + CHAR(13) + ';'
FROM #TempTotal

PRINT @SQL
--EXEC (@SQL)

使用 EXEC 运行它先注释掉,看看它是否是你需要的,然后你可以取消注释它来运行它。

关于sql-server - 我们可以在 select 语句中使用 EXEC(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6767146/

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