我的存储过程如下所示:
create procedure test as
begin
if exists(
select 1 from sys.columns
where Name = N'Column2'
and Object_ID = Object_ID(Table2')
)
select Column2 from Table2
end
我想在db上运行此过程,其中 Column2不存在。我不想让SP存在。目前错误是:
Msg 207,Level 16,State 1,Procedure test,Line 39 [批次开始行0]无效的列名称' Column2'。
有没有办法这样做?为什么是,为什么不呢?
以及为什么例如你检查存在表并选择不存在的表有效?
答案 0 :(得分:7)
使用动态SQL:
create procedure test as
begin
if exists (select 1
from sys.columns
where Name = N'Column2' and Object_ID = Object_ID('Table2')
)
begin
exec sp_executesql N'select Column2 from Table2';
end;
end;