open eng for 'select * from mytable where mytable.apldate>('2012-05-01','yyyy-mm-dd')';
loop
.....
end loop;
如果我这样写是会报错的,因为2012-05-01和yyyy-mm-dd是用单引号引起来的,而外围又是单引号,如果没有时间
条件,比如:
open eng for 'select * from mytable';
loop
.....
end loop;
这样就没有问题,但是如果要加上时间条件,该怎么写呢,我试了好几种方式,但是都不行。
请教各位要怎么写才规范呢。

解决方案 »

  1.   

    open eng for 'select * from mytable where mytable.apldate>(''2012-05-01'',''yyyy-mm-dd'')';
      

  2.   


    --字符串内,两个单引号代表select语句里的一个单引号
    open eng for 'select * from mytable where mytable.apldate>(''2012-05-01'',''yyyy-mm-dd'')';
      

  3.   


    declare
    type emp_cur_type is ref cursor return emp%rowtype;  --定义强游标类型
    emp_cur emp_cur_type;
    emp_record emp%rowtype;
    begin
      open emp_cur for select * from emp where hiredate>to_date('1980-01-01','yyyy-mm-dd') ;
      loop
       fetch emp_cur into emp_record;
       exit when emp_cur%notfound;
       dbms_output.put_line(emp_record.ename);
      end loop;
      close emp_cur;
    end;SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER