【发布时间】:2020-06-23 21:32:11
【问题描述】:
我有一张表dbo.t_products,我想知道最后更新的记录。为此,我有一个属性last_changed,它为每条记录存储上次更新的时间戳。
最后,我想将结果保存在一个名为 @y 的变量中。
DECLARE @y DATETIME
DECLARE @p_table VARCHAR(100)
SET @p_table = 'dbo.t_products'
EXECUTE sp_executesql N'SET @y = SELECT MAX(last_changed) FROM @p_table'
,N'@p_table VARCHAR, @y DATETIME OUTPUT'
,@p_table
,@y OUTPUT
SELECT @y
系统返回如下信息:
消息 156,第 15 级,状态 1,第 25 行
关键字“SELECT”附近的语法不正确。
有什么想法吗?
【问题讨论】:
-
调试动态SQL的第一步是打印你试图执行的SQL——然后错误的原因通常会很明显。
-
我不确定我是否清楚地遵循了
EXECUTE sp_executesql ....的声明,但我看到的一件显而易见的事情是,@p_table 重复了。您能否仅提及简单的陈述(例如生成的动态陈述) -
这永远不会像这样工作。您不能参数化对象名称。
-
用括号中的 SELECT 语句试试。让您跳过“关键字 'SELECT' 附近的语法不正确。”
-
如果你发现@DaleK 提供的答案有帮助,你真的应该接受它meta.stackexchange.com/questions/5234/…
标签: sql sql-server dynamic-function