for item in( SQL ) loop end loop;
中间的sql可以是动态的吗

解决方案 »

  1.   

    for 循环不支持动态 sql,你可以定义一个游标,用动态SQL打开,然后循环游标
      

  2.   


    declare
        sqlstring             varchar2(200);
        cur_test              sys_refcursor;
        emprow                emp%rowtype;
    begin
        sqlstring := 'select * from emp';
        open cur_test for sqlstring;
        
        loop
            fetch cur_test into emprow;
            exit when cur_test%notfound;
            
            dbms_output.put_line(emprow.empno || ',' || emprow.ename);
        end loop;
    end;
    /
    7369,SMITH
    7499,ALLEN
    7521,WARD
    7566,JONES
    7654,MARTIN
    7698,BLAKE
    7782,CLARK
    7788,SCOTT
    7839,KING
    7844,TURNER
    7876,ADAMS
    7900,JAMES
    7902,FORD
    7934,MILLER
     
    PL/SQL procedure successfully completed