ColA   ColB   ColC   ColD
 A       B      C      D
 A              F      G
 B       H             I
现在我想得到的结果如下
ColA   ColD
 A       D
 A       G
 B       I
也就是说B和C是传入的参数,如果没有内容就查找所有的,如果有就只显示满足条件的,像上面的如果B传入的是B则结果如下:
ColA   ColD
 A       D

解决方案 »

  1.   

    写存储过程吧,你试试看!~~CREATE OR REPLACE PROCEDURE sp_test(
    par_B in varchar2,
    par_C in varchar2
    ) as
    var_count number;
    var_B varchar2(5);
    var_C varchar2(5);
    strSql varchar2(1000);
    type cursor_t is ref cursor;
    result_cur cursor_t ;
    print_cur table_name%ROWTYPE;BEGIN
      strSql := '';
      select count(*) into var_count from table_name t where t.ColB = par_B and t.ColC = par_C;
      -- if jude count--
      IF (var_count = 0) THEN
        strSql := 'select * from table_name';
      ELSE 
        strSql := 'select * from table_name t where t.ColB = par_B and t.ColC = par_C';
      END IF;
      
      OPEN result_cur FOR strSql;
        LOOP
          FETCH result_cur INTO print_cur;
          EXIT WHEN result_cur%NOTFOUND;
            dbms_output.put_line('ColA:'||print_cur.ColA||'  ColD:'||print_cur.ColD);
        END LOOP;
      CLOSE result_cur;
      
    END sp_test;
      

  2.   

    select cola,cold from t1 where nvl(colb,' ') = nvl(&b,nvl(colb,' ')) and nvl(colc,' ') = nvl(&c,nvl(colc,' '))