DB2 SQL код для извлечения хранимых процедур - PullRequest
6 голосов
/ 11 июня 2009

У нас с коллегами несколько сотен хранимых процедур SQL, которые находятся в размещенной базе данных DB2 / z (версия 8.1). У нас нет прав администратора, и наш доступ к базе данных осуществляется через экраны QMF. Загрузка выполняется через сеанс терминала 3270 с помощью команды TSO FT.

Есть ли простой / эффективный способ извлечь определения / текст всех наших хранимых процедур?

Я бы хотел сделать еженедельный дамп, который мы храним на месте в SVN или какой-либо другой системе контроля версий.

Любые предложения будут с благодарностью.

Спасибо
Стивен


Обновление - 9 июля 2009 года

Большое спасибо за предложения, но, похоже, они не помогают в нашей конкретной конфигурации. Я вернусь к нашему продавцу и попрошу у них дополнительную информацию. Обновлюсь, когда узнаю что-нибудь еще.

Стивен

Ответы [ 4 ]

8 голосов
/ 08 июля 2009

Вы можете получить текст хранимой процедуры, выполнив

SELECT ROUTINE_DEFINITION FROM SYSIBM.ROUTINES;

Кроме того, вы можете выбрать получение только SP в вашей схеме, выполнив:

SELECT ROUTINE_DEFINITION FROM SYSIBM.ROUTINES WHERE SPECIFIC_SCHEMA = 'MYSCHEMA';

Если вы решили ограничить результаты с помощью предложения where, обратите внимание, что оно чувствительно к регистру , и вам нужно указать критерии только в CAPS.

4 голосов
/ 14 июня 2009

В DB2 z / OS вы захотите просмотреть таблицы системного каталога, в первую очередь SYSIBM.SYSROUTINES, SYSIBM.SYSROUTINES_OPTS и SYSIBM.SYSROUTINES_SRC

1 голос
/ 26 июня 2009

Если у них есть только права конечного пользователя на этой базе данных, имеет ли это значение?

из информационного центра для v9.5 требуется следующая привилегия:

Привилегия SELECT для таблиц системного каталога.

В некоторых случаях, например при создании DDL контейнера табличного пространства (который вызывает API sqlbotcq, sqlbftcq и sqlbctcq), вам потребуется одно из следующих действий:

* sysadm
* sysctrl
* sysmaint
* dbadm
0 голосов
/ 11 июня 2009

Я думаю, db2look сможет получить для вас DDL.

Согласно документации, единственное, что вам нужно, это привилегия SELECT для таблиц системного каталога.

Я больше не знаком с OS / 390, поэтому не уверен, как вы запускаете db2look на этой платформе. Надеюсь, ваш администратор БД поможет вам.

...