提问人:nehuh435 提问时间:11/15/2023 更新时间:11/15/2023 访问量:42
使用动态 SQL 时的 ORDER BY [已关闭]
ORDER BY when using Dynamic SQL [closed]
问:
在尝试对动态 SQL 的某个部分进行 ORDER BY 时,我一直遇到语法错误。
我对 SQL 有相当基本的了解,但这是我尝试过的(我不想包含整个代码),我在顶部正确声明了 SQL 和 DBName,并在底部使用了 EXEC:
SET @SQL = N'SELECT TOP 1
Test_Time,
Test_ID,
FROM ' + QUOTENAME(@DBName) + '.dbo.Event_Table'
ORDER BY Test_Time DESC
我只想知道这是否可行,或者我是否需要尝试另一种方法。问题出在 ORDER BY 中,因为没有它,代码可以完美运行。
答:
1赞
Tim Jarosz
11/15/2023
#1
必须在文本字符串中,如下所示:ORDER BY
@SQL
SET @SQL = N'SELECT TOP 1
Test_Time,
Test_ID,
FROM ' + QUOTENAME(@DBName) + '.dbo.Event_Table
ORDER BY Test_Time DESC'
(我只是将尾随撇号(')从后面移到后面一行。Event_Table
DESC
评论
+'ORDER BY Test_Time DESC'
sp_executesql
DECLARE @proc nvarchar(1000) = QUOTENAME(@DBName) + '.sys.sp_executesql'; EXEC @proc @SQL;