我正在编写一个被遗留系统调用的存储过程。遗留系统的约束之一是,从存储的proc返回的单个结果集中必须至少有一行。标准是在第一列中返回一个零(是的,我知道!)。
实现这一点的明显方法是创建一个临时表,将结果放入其中,测试临时表中的任何行,然后返回临时表中的结果或单个空结果。
另一种方法可能是在执行主查询之前对主查询中的同一where子句执行EXISTS。
这两个都不是很令人满意。有谁能想出更好的方法。我一直在想像这样的联盟(我知道这是行不通的):
--create table #test
--(
-- id int identity,
-- category varchar(10)
--)
--go
--insert #test values ('A')
--insert #test values ('B')
--insert #test values ('C')
declare @category varchar(10)
set @category = 'D'
select
id, category
from #test
where category = @category
union
select
0, ''
from #test
where @@rowcount = 0
https://stackoverflow.com/questions/3365697
复制相似问题