如i_1=1 则pk_1=10,否则不判断pk_1.???你的 pk_1是表,怎么等于10啊?

解决方案 »

  1.   

    不是啦 有个表A , 表里有pk_1,pk_2,pk_3三个key
    我想:i_1=1,就SELECT * FROM A WHERE PK_1 = 10.......
         否则 ,就SELECT * FROM A WHERE ........
           不要pk_1这个条件了
      

  2.   

    create or replace procedure test(
      i_1 number,
    i_2 number,
    i_3 number) as 
    begin
       if(i_1 = 1) then
          SELECT * FROM A WHERE PK_1 = 10;
       elsif(i_2 = 1) then
          SELECT * FROM A WHERE PK_2 = 10;
      .....
      end if; 
    end;
      

  3.   

    可实现:
       IF(i_1 = 1 AND i_2 = 1) THEN
         SELECT * FROM A WHERE PK_1 = 10 AND PK_2 = 10.....
       ELSIF(i_1 <> 1 AND i_2 = 1)THEN
         SELECT * FROM A WHERE PK_2 = 10.....
       ELSIF(i_1 = 1 AND i_2 <> 1)THEN
         SELECT * FROM A WHERE PK_1 = 10.....
       ELSIF(i_1 <> 1 AND i_2 <> 1)THEN
         SELECT * FROM A WHERE .....
    好长啊 !!  有没有简单点方法呀??
      

  4.   

    你可以换成这个   select *  from A where decode(i_1,1,PK_1,decode(i_2,1,PK_2)) = 10;不过这样不是同时可以等于1的
      

  5.   

    ....
    swich(...)
    {
     case ... : ...;
     case ... : ...;
    ...
    ...
     }
      

  6.   

    select * from a where decode(i_1,1,pk_1,1)=10
    union all
    select * from a where decode(i_2,1,pk_2,1)=10 
    union all
    select * from a where decode(i_3,1,pk_3,1)=10
      

  7.   

    问beckhambobo:
       select * from a where decode(i_1,1,pk_1,10)=10 
          AND decode(i_2,1,pk_2,10)=10
          AND decode(i_3,1,pk_3,10)=10;对吗???
      

  8.   

    zhaojx9(aqiu):
    能不能解释一下decode?