Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Деплоинг процедур
|
|||
|---|---|---|---|
|
#18+
Вот, наконец, встала задача подготовить деплоинг SQL PL процедур в клиентскую базу на UNIX AIX. И призадумался я, а как это правильно сделать. Имеется набор процедур. Процедуры лежат в схеме SCHEMA1 и предназначены для работы как с объектами в SCHEMA1 так и в SCHEMA2. Заранее до развертывания имена схем неизвестны. Это знает только админ клиента. Поэтому исходные коды процедур не должны иметь внутри себя имена схем. Предполагается, что админ устанавливает значения переменных ${SCHEMA1}, ${SCHEMA2} и запускает срипт для установки приложения. Само приложение схем не знает. Процедуры из SCHEMA1 имеют доступ к 1. таблицам, 2. процедурам и 3. сиквенсам из SCHEMA2. 1. Чтобы обеспечить доступ к таблицам без указания схем в SCHEMA1 сделаны алиасы на имена таблиц: Код: plaintext и в коде используется address_2 вместо schema2.address. 2. Для доступа к процедурам в операторе CALL без имен схем используем current path: db2 -v set current path = sysibm, sysfun, sysproc, sysibmadm, ${SCHEMA2} 3. Но вот что делать с сиквенсами непонятно. Для сиквенсов алиасы не предусмотрены. current path на них тоже не распространяется. Как избавиться от схемы в коде SQL PL для сиквенсов? Речь идет об этом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Тут address2 - это таблица их SCHEMA2, доступ к ней обеспечивает алиас prc_get_next_unit - это процедура из SCHEMA2. Компиляция проходит поскольку задан current path. А вот что делать с schema2.seq_address_id? В коде не должно быть упоминания schema2, так как имя schema2 определяет админ клиента. Заменить его на ${SCHEMA2} не получится поскольку CLP не понимает переменных Юникса. Насколько я знаю своих переменных подстановки у CLP нет. Конечно, можно сделать в SCHEMA2 функцию, которая запрашивала бы сиквенс и возвращала бы значение и вызывать эту функцию в SCHEMA1, но хотелось бы попроще. Может есть на этот счет "Бест практис"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2009, 13:58 |
|
||
|
Деплоинг процедур
|
|||
|---|---|---|---|
|
#18+
шубин_ду, У вас там такая хитрая миграция app? кстати, в 9.7 можно делать алиас на sequence ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2009, 15:09 |
|
||
|
Деплоинг процедур
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, Спасибо. Да, наверное с sed сделаю. Я думал, может как-нибудь попроще можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2009, 16:53 |
|
||
|
Деплоинг процедур
|
|||
|---|---|---|---|
|
#18+
herrшубин_ду, У вас там такая хитрая миграция app? кстати, в 9.7 можно делать алиас на sequence До 9.7 еще дожить надо. Пока 9.5. Миграция не хитрая. Но миграционное приложение должно быть отделено от продукционного путем размещения в своей собственной схеме. Отсюда проблема доступа к объектам в чужой схеме. По-моему достаточно обычная ситуация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2009, 16:57 |
|
||
|
Деплоинг процедур
|
|||
|---|---|---|---|
|
#18+
под AIX можно собрать и поставить bash я обычно так делаю: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2009, 18:02 |
|
||
|
|

start [/forum/topic.php?fid=43&fpage=78&tid=1603183]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 396ms |

| 0 / 0 |
