现在想要做一个游标
内容如下   SELECT
   *
 FROM
     TABLE t
 WHERE
     if 游标参数A = 2 then
        t.字段1 = 2 or t.字段1 = 7
     elsif 游标参数A  =7
        t.字段1 = 2 or t.字段1 = 7
     else
        t.字段1 = 游标参数A
     end ifwhere条件应该怎么写?

解决方案 »

  1.   

    WHERE 
        if 游标参数A = 2 then 
            t.字段1 = 2 or t.字段1 = 7 
        elsif 游标参数A  =7 
            t.字段1 = 2 or t.字段1 = 7 
        else 
            t.字段1 = 游标参数A 
        end if 这种where的使用是有问题的
      

  2.   

    是有问题的,where下面的内容是要求,不是正式代码。
    我的目的是要把下面的if else 转化为sql文。
      

  3.   

    这个只能要动态的sql
    if 游标参数A = 2 
    sql文:
      SELECT
      *
    FROM
        TABLE t
    WHERE
            t.字段1 = 2 or t.字段1 = 7
    if 游标参数A  =7
    sql文:
      SELECT
      *
    FROM
        TABLE t
    WHERE
            t.字段1 = 2 or t.字段1 = 7否则:
      SELECT
      *
    FROM
        TABLE t
    WHERE
            t.字段1 = 游标参数A
      

  4.   


           (( t.字段1 = 2 or t.字段1 = 7 ) and 游标参数A = 2)
        or
          ((   t.字段1 = 2 or t.字段1 = 7 ) and 游标参数A = 7)
        or 
          ((   t.字段1 = 游标参数A ) and 游标参数A not in (2,7))
      

  5.   

    declare
     type t_cursor is ref cursor;
     v_cursor t_cursor;
     v_sqlstr;
     v_table table1%rowtype;
    begin
     v_sqlstr:='select * from table1';
      case a
        when 2 then
          v_sqlstr:=v_sqlstr||' t.字段1 = 2 or t.字段1 = 7';
        when 7 then
          v_sqlstr:=v_sqlstr||' t.字段1 = 2 or t.字段1 = 7';
      else
        v_sqlstr:=v_sqlstr||' t.字段1 = '||a;
      end case;
      
      open t_cursor for v_sqlstr;
      loop
       fetch t_cursor into v_table;
       exit when t_cursor%notfound;
    --输出结果集
      .....
      end loop;
    end;
    大概这样子