动态SQL中使用ORDER BY出现语法错误,咨询可行解决方案
动态SQL添加ORDER BY的语法错误解决方法
你的问题出在把ORDER BY子句放在了动态SQL字符串的外部,SQL引擎会将它视为独立于SET @SQL的语句,导致语法冲突。另外你原代码里Test_ID后面的多余逗号也会引发语法错误,需要一并修正。
正确写法
把ORDER BY拼接到动态SQL变量内部,同时去掉列名后的多余逗号:
SET @SQL = N'SELECT TOP 1 Test_Time, Test_ID FROM ' + QUOTENAME(@DBName) + '.dbo.Event_Table ORDER BY Test_Time DESC'
原理说明
动态SQL的核心是把完整的可执行SQL语句拼接成字符串变量,所有查询逻辑(包括排序、筛选等)都必须包含在这个字符串里,之后通过EXEC执行该变量才能正确运行。
内容的提问来源于stack exchange,提问作者nehuh435
相关产品推荐
相关产品推荐

