| Guesssst | | Забей, над обработкой ошибок подумаю потом. |
Ты вообще понял, о чем идет речь ? Сомневаюсь.
SQL> create table t_clob (clob_field clob);
Table created.
SQL> insert into t_clob values('begin null; end;');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t_clob;
CLOB_FIELD
--------------------------------------------------------------------------------
begin null; end;
SQL> DECLARE
2
3 c INT;
4 ok INT;
5
6 BEGIN
7
8 FOR crec IN (SELECT clob_field FROM t_clob)
9 LOOP
10 c:= dbms_sql.open_cursor();
11 DBMS_SQL.PARSE(c,crec.clob_field,1);
12 ok:= dbms_sql.execute(c);
13 dbms_sql.close_cursor(c);
14 END LOOP;
15
16 END;
17 /
PL/SQL procedure successfully completed.
SQL> update t_clob set clob_field = 'begin polnaya hren; end;';
1 row updated.
SQL> commit;
Commit complete.
SQL> DECLARE
2
3 c INT;
4 ok INT;
5
6 BEGIN
7
8 FOR crec IN (SELECT clob_field FROM t_clob)
9 LOOP
10 c:= dbms_sql.open_cursor();
11 DBMS_SQL.PARSE(c,crec.clob_field,1);
12 ok:= dbms_sql.execute(c);
13 dbms_sql.close_cursor(c);
14 END LOOP;
15
16 END;
17 /
DECLARE
*
ERROR at line 1:
ORA-06550: line 1, column 15:
PLS-00103: Encountered the symbol "HREN" when expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "HREN" to continue.
ORA-06512: at "SYS.DBMS_SYS_SQL", line 906
ORA-06512: at "SYS.DBMS_SQL", line 39
ORA-06512: at line 11
SQL> DECLARE
2
3 c INT;
4 ok INT;
5
6 BEGIN
7
8 FOR crec IN (SELECT clob_field FROM t_clob)
9 LOOP
10 c:= dbms_sql.open_cursor();
11 DBMS_SQL.PARSE(c,crec.clob_field,1);
12 ok:= dbms_sql.execute(c);
13 dbms_sql.close_cursor(c);
14 END LOOP;
15
16 EXCEPTION WHEN others THEN null;
17
18 END;
19 /
PL/SQL procedure successfully completed.
|