IF (SELECT size FROM TBL_C WHERE 条件1='?' AND 条件2='?')='0' THEN
SELECT * FROM A;
ELSE IF
SELECT * FROM B;
END IF;
在程序中的SELECT语句串(当然这个肯定不行),如果为true返回a的数据集。
我是想知道这个串能不能写出来(大家清楚一点这不是在存储过程中写)
如果可以请哪位帮忙写一下。
————————————————————————————
SELECT * FROM A;
ELSE IF
SELECT * FROM B;
END IF;
在程序中的SELECT语句串(当然这个肯定不行),如果为true返回a的数据集。
我是想知道这个串能不能写出来(大家清楚一点这不是在存储过程中写)
如果可以请哪位帮忙写一下。
————————————————————————————
不在存储过程中那么串应该是在高级语言中了,那要想看自己的字符串的值可以跟踪看 可以MESSAGEBOX出来
这个串是在高级语言中写的,
用ADO对象连接最后返回的是个数据集,
主要意思就是:
我可以先将(SELECT size FROM TBL_C WHERE 条件1='?' AND 条件2='?')这个数据集返回
然后比较,然后判断使用哪一个串(要表a的数据集还是要表b的),
但这不需要向服务器交换两次数据么,
上面的串就是想在一次取数据集里完成
没错
你太有才了
select *
from A
where exists (SELECT 1 FROM TBL_C WHERE 条件1='?' AND 条件2='?')
union
select *
from B
where not exists (SELECT 1 FROM TBL_C WHERE 条件1='?' AND 条件2='?')是这种意思吗?
不是
这个(SELECT 1 FROM TBL_C WHERE 条件1='?' AND 条件2='?')返回肯定有数据而且只有一个,
这个比较是它等于'0','1','2'是这个意思
'1':select * from A
'2':select * from B
select *
from A
where exists (SELECT decode(size,0,true,false) FROM TBL_C WHERE 条件1='?' AND 条件2='?')
union
select *
from B
where not exists (SELECT decode(size,0,true,false) FROM TBL_C WHERE 条件1='?' AND 条件2='?')
这个DECODE我已经试过了,就是出错
SELECT DECODE(size,'0',TRUE,FALSE) FROM TBL_C WHERE 条件1='?' AND 条件2='?'“ORA-00904”无效的关键字‘FALSE’
感谢,zgz117这个怎么给分
SELECT * FROM A
ELSE
SELECT * FROM B