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

sp_executesql输出变量始终为NULL,但SSMS中显示正常问题排查

动态SQL获取表OBJECT_ID时@object_id始终为NULL的问题解决

我尝试基于表的存在情况构建动态SQL,逻辑是先检查表是否存在,若存在则更新特定字段。但执行以下语句时,@object_id始终为NULL:

set @sql = CONCAT('select OBJECT_ID(N''',@table_name, ''', N''U'')')
exec sp_executesql @sql, N'@object_id int output', @object_id output;
if @object_id is not null
begin
...
end

奇怪的是,在SQL Server Management Studio(SSMS)中直接执行OBJECT_ID(N'表名', N'U')时,表存在能返回真实的对象ID,不存在则返回NULL,这完全符合预期。那我的sp_executesql语句到底哪里出错了?


解决方法

感谢lptr的提示,修改动态SQL的赋值逻辑后问题解决:

set @sql = CONCAT('select @oi = OBJECT_ID(N''',@table_name, ''', N''U'')')
exec sp_executesql @sql, N'@oi int output', @object_id output;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:37:07