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
相关产品推荐
相关产品推荐

