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的数据集。
我是想知道这个串能不能写出来(大家清楚一点这不是在存储过程中写)
如果可以请哪位帮忙写一下。
————————————————————————————

解决方案 »

  1.   

    没有看明白
    不在存储过程中那么串应该是在高级语言中了,那要想看自己的字符串的值可以跟踪看   可以MESSAGEBOX出来
      

  2.   

    看的好晕。先执行SELECT size FROM TBL_C WHERE 条件1='?' AND 条件2='?'这个东西,把结果给一个变量,然后做判断。再执行SELECT * FROM A;或SELECT * FROM B;返回结果集,是这意思不?
      

  3.   

    汉字解释一下:
    这个串是在高级语言中写的,
    用ADO对象连接最后返回的是个数据集,
    主要意思就是:
    我可以先将(SELECT size FROM TBL_C WHERE 条件1='?' AND 条件2='?')这个数据集返回
    然后比较,然后判断使用哪一个串(要表a的数据集还是要表b的),
    但这不需要向服务器交换两次数据么,
    上面的串就是想在一次取数据集里完成
      

  4.   

    intotheheart
    没错
    你太有才了
      

  5.   


    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='?')是这种意思吗?
      

  6.   

    zqz117
    不是
    这个(SELECT 1 FROM TBL_C WHERE 条件1='?' AND 条件2='?')返回肯定有数据而且只有一个,
    这个比较是它等于'0','1','2'是这个意思
    '1':select *  from A
    '2':select *  from B
      

  7.   

    那就这样吧
    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='?')
      

  8.   

    zqz117:
    这个DECODE我已经试过了,就是出错
    SELECT DECODE(size,'0',TRUE,FALSE) FROM TBL_C WHERE 条件1='?' AND 条件2='?'“ORA-00904”无效的关键字‘FALSE’
      

  9.   

    因为这个翻译值 true,false 都是布尔型而size是字符
      

  10.   

    好了,
    感谢,zgz117这个怎么给分
      

  11.   

    IF Exists (SELECT size FROM TBL_C WHERE 条件1='?' AND 条件2='?') 
    SELECT * FROM A
    ELSE 
    SELECT * FROM B