2013-07-24 4 views
1

Предположим, что у меня есть сценарий создания пакета, хранящийся внутри таблицы ALPHA, в столбце BETA типа CLOB. Длина CLOB составляет> 32767 символов.Oracle Package внутри CLOB длиной> 32767 символов. Как «выполнить немедленное» это?

Используя код PL/SQL, я хотел бы «выполнить немедленный» сценарий создания пакета.

Я мог бы достичь этого?

Заранее благодарю вас за помощь.

Я использую Oracle 10G

ответ

3

execute immediate не поддерживает объекты CLOB until 11gR2. Вы можете использовать DMBS_SQL для обработки больших операторов. В более ранних версиях вы могли создать инструкцию, но 11g позволяет вам parse a CLOB.

Приведен пример here.

Создание пакета динамически кажется странным требованием.


Поскольку вы на 10г, вам нужно будет использовать version of DBMS_SQL.PARSE that lets you build up large statements:

Процедура PARSE также поддерживает следующий синтаксис для больших SQL утверждений:

DBMS_SQL.PARSE ( 
    c     IN INTEGER, 
    statement   IN VARCHAR2S, 
    lb     IN INTEGER, 
    ub     IN INTEGER, 
    lfflg    IN BOOLEAN, 
    language_flag  IN INTEGER); 

Примечание : Процедура объединяет элементы оператора таблицы PL/SQL и анализирует полученную строку. Вы можете использовать эту процедуру для анализа оператора , который больше, чем предел для одной переменной VARCHAR2 , разделив оператор.

Пример такого подхода here.

+0

Спасибо, что помогли мне :-) – UltraCommit