как сохранить хранимые процедуры в oracle toad в файлы сценариев

#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 из главного меню базы данных под всплывающим окном Экспорта. Добавьте туда свои объекты. У вас есть несколько вариантов вывода и вариантов генерации сценария. Например, вы можете не указывать имя схемы, если хотите скомпилировать их в другой схеме и т.д. Поиграйте с этим, поскольку я думаю, что это сделает все, что вам нужно.