--example
declare
  plsql_str  varchar2(500);
begin
  plsql_str:= 
       '
        declare 
           i   number :=  9 ;
        begin
           for j in 1..i loop
               dbms_output.put_line(to_char(j**2));
           end loop;
        end; 
       ';
  execute immediate plsql_str;
end;
/
---------------------------------
SQL> declare
  2    plsql_str  varchar2(500);
  3  begin
  4    plsql_str:= 
  5         '
  6          declare 
  7             i   number :=  9 ;
  8          begin
  9             for j in 1..i loop
 10                 dbms_output.put_line(to_char(j**2));
 11             end loop;
 12          end; 
 13         ';
 14    execute immediate plsql_str;
 15  end;
 16  /
1
4
9
16
25
36
49
64
81PL/SQL 程序順利完成目前歷時: 00:00:00.31

解决方案 »

  1.   

    还有一个问题啊
    CURSOR C_LMNAME IS
    SELECT  LMNAME FROM td_m_spscale_pm 
    GROUP BY LMNAME;
    OPEN C_LMNAME;
    LOOP
    FETCH C_LMNAME INTO iv_LMNAME;
    EXIT WHEN C_LMNAME%NOTFOUND;这后面要用到 V1.LMNAME=iv_LMNAME 
    这种游标和下面一种方法有什么区别吗V1.LMNAME IN (SELECT LMNAME   FROM  tm_d_spscale_pm)
      

  2.   

    两种都一样,不过后面一种是采用隐式游标的方式,
    后一种方式更好,因为,你不必在意打开,提取和关闭游标,Oracle自动帮你实现这些功能.