#oracle #plsql #toad
#Oracle #plsql #toad
Вопрос:
У меня есть что-то вроде 1300 хранимых процедур в oracle toad. Я хочу сохранить каждую хранимую процедуру в отдельный файл сценария, поскольку мне нужно обновить его в другой базе данных. Как это можно выполнить
Комментарии:
1. это можно сделать по отдельности, но как сделать это за один раз?
Ответ №1:
Самый простой способ сделать это — не нужно этого делать. Лучше всего писать сценарии в редакторе и запускать их в базе данных с помощью TOAD.
Почему это лучшая практика? Два слова: управление версиями.
Но, учитывая, что вы сейчас не там, где находитесь, вы можете использовать DBMS_METADATA.GET_DDL, чтобы удалить весь исходный код пакета. В документах.
Вот другой подход, который упрощает создание отдельных файлов для каждого объекта, то есть файла для каждой спецификации пакета и тела. Отдельные файлы — лучший способ управления исходным кодом вашего PL / SQL. (Вы можете расширить этот метод для автономных процедур и функций, типов и триггеров.
Эти запросы будут генерировать SQL * Plus скрипты, которые вы можете запускать в TOAD.
select 'spool '||object_name||'_spec.sql'||chr(10)
||'select text from user_source where type=''PACKAGE'' and name = '''||object_name||''' order by line;'||chr(10)
||'spool off'
from user_objects
where object_type='PACKAGE'
order by object_name
/
select 'spool '||object_name||'_body.sql'||chr(10)
||'select text from user_source where type=''PACKAGE BODY'' and name = '''||object_name||''' order by line;'||chr(10)
||'spool off'
from user_objects
where object_type='PACKAGE BODY'
order by object_name
/
Возможно, вам потребуется настроить размер СТРОКИ и отключить ЗАГОЛОВКИ, в зависимости от настроек вашей среды.
Ответ №2:
В Toad смотрите функцию экспорта DDL из главного меню базы данных под всплывающим окном Экспорта. Добавьте туда свои объекты. У вас есть несколько вариантов вывода и вариантов генерации сценария. Например, вы можете не указывать имя схемы, если хотите скомпилировать их в другой схеме и т.д. Поиграйте с этим, поскольку я думаю, что это сделает все, что вам нужно.