Используйте тип данных CLOB
и добавьте данные, используя процедуру dbms_lob.writeappend
. Это ссылка (Oracle 18 c).
Возможно, ошибка возникает при вызове dbms_output.put_line
. Процедура определена только для varchar2
аргументов, что означает, что во время вызова происходит неявное преобразование. Это не удастся для содержимого сгустка длиннее 32767 символов / байтов.
В качестве альтернативы вы можете объявить коллекцию более varchar2(4000)
и последовательно заполнить элементы коллекции:
CREATE OR REPLACE PROCEDURE sp_Market
IS
TYPE tLongString IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;
cNames tLongString;
BEGIN
DECLARE CURSOR cur IS Select ID, Order_of, field_name, sqql FROM pld_medicare_config;
BEGIN
FOR i IN cur
LOOP
cNames(cNames.COUNT+1) := i.sqql;
END LOOP;
END;
END sp_Market;
Примечание
Исправленный код, теперь скомпилируется.