还是在这里提问好,简单sqlserver问题(30分)

  • 主题发起人 主题发起人 genglimin
  • 开始时间 开始时间
G

genglimin

Unregistered / Unconfirmed
GUEST, unregistred user!
我要在存储过程中返回一个结果集.我要先做一个查询,如果这个查询有记录,那么就返回这个结果集合,否则就返回另外一个查询的结果集.我目前是这样做的
if exists( select * from Books where title='项目')
begin
select * from Books where title='项目'
end
else
select * from Orders where customer='张三'

可以执行,但感觉这样不对,谁有好的办法
 
为什么不对阿?
 
begin
DECLARE lExists int;
Select Count(*) From Books Where title = '项目' Into lExists;
IF lExists > 0 THEN
Select * From Books Where title = '项目';
ELSE
Select * From Orders Where customer = '张三';
END IF;
end;
 
你的语句是没有问题,关键是你返回来的字段名称及字段个数可能会不一样的,如果要用ado控件返回显示出来的话,还得把两个返回来的字段名统一一下,
if exists( select 1 from Books where title='项目')
begin
select xx as field1,.... fieldn from Books where title='项目'
end
else
select xx1 as field1,....fieldn from Orders where customer='张三'
 
谢谢各位
to 李翔鹏, 李兄好久不见, 因为 select * from Books where title='项目' 这个语句执行了两遍,我觉得性能低
to deardai,不用控件显示,只是得到一个结果
to szhcracker,你的办法可行 ,只是不知道是不是最好的
 
是阿,好久不见。
 
人真少啊
李老兄做什么开发呢
 
if exists( select top 1 1 from Books where title='项目')
begin
select * from Books where title='项目'
end else begin
select * from Orders where customer='张三'
end
 
后退
顶部