Я работаю в базе данных Oracle и не имею прямого доступа к нашей производственной базе данных.У меня есть косвенный доступ через ссылку на базу данных.Ссылка с тем же пользователем, под которым запускается весь пользовательский код, и имеет те же разрешения, как если бы я должен был войти в систему непосредственно как этот пользователь.
Мой вопрос: при таком доступе можно ли скомпилировать большую хранимую процедуру или пакет по ссылке /?
Я нашел функцию
dbms_utility.EXEC_DDL_STATEMENT
Я успешно использую ее для компиляции процедуры в целевой базе данных, однако, если процедура велика, более 32 КБ, я получаю ошибку
[Error] Execution (1: 1): ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line 21
Можно ли отправить более 32 тыс. Байт в целевую базу данных и заставить базу данных скомпилировать код?Вот фрагмент того, чего я пытаюсь достичь
declare vsql NCLOB ;
i NUMBER := 0;
begin
FOR rec IN (
select * from all_source@dblink
where owner = :schema_owner
and name = :procedure_name
order by line asc
)
LOOP
vsql := vsql || rec.text;
--this outputs fine
DBMS_OUTPUT.put_line ('Record ' || i || ': ' || rec.text);
END LOOP;
--line errors with ORA-06502
dbms_utility.EXEC_DDL_STATEMENT@dblink(vsql);
end;