You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含动态表名的EXEC执行结果存入datetime类型变量

动态SQL查询结果赋值给datetime变量的正确实现

你原写法报错的核心原因是EXEC()的返回值为整数类型的SQL执行状态码,无法直接返回查询结果集中的内容赋值给datetime类型变量。正确方案是使用sp_executesql系统存储过程配合输出参数实现取值,完整可运行代码如下:

DECLARE @F VARCHAR(50) = REPLACE('H-10','-','');
DECLARE @SQLQuery AS NVARCHAR(500)
DECLARE @SOR_time datetime

-- 构造动态SQL,声明内部输出参数占位
SET @SQLQuery = N'
SELECT TOP 1 @InnerTime = DATEADD(MINUTE, -330, time_stamp)
FROM DMD_'+@F+'_DC_data
ORDER BY time_stamp ASC'

-- 调用sp_executesql完成参数映射与结果返回
EXEC sp_executesql 
    @SQLQuery,
    N'@InnerTime DATETIME OUTPUT', -- 定义动态SQL内部参数的类型、属性
    @InnerTime = @SOR_time OUTPUT -- 将内部输出参数绑定到外部的目标变量

-- 验证取值结果,可根据业务需求使用@SOR_time
SELECT @SOR_time AS SOR_time

注意事项

  • 若动态SQL执行的查询无匹配数据,@SOR_time最终值为NULL,可根据业务需要额外增加判空或默认值赋值逻辑
  • 动态拼接表名时建议额外做合法性校验,避免SQL注入风险

内容的提问来源于stack exchange,提问作者tejas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:54:01