Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Миграция БД - функция error_message()
|
|||
|---|---|---|---|
|
#18+
Всем доброе время суток! Вопрос такой - в процессе миграции БД с платформы MS SQL на PG SQL 9.6.x встречаются различные встроенные в БД вызовы типа error_message(). Чтобы не переписывать каждый раз код, не тратить на это дополнительное время и автоматизировать процесс хотелось бы иметь возможность создать аналогичные функции-обертки на PG SQL. Проблема заключается в том, что в отличие от стандартных ISNULL(), GETDATE() и т.п. функции обработки ошибок вызываются в контексте исключения. И если просто написать в PLPGSQL в теле функции-обертки что-то вроде GET STACKED DIAGNOSTICS то получится ERROR: GET STACKED DIAGNOSTICS cannot be used outside an exception handler CONTEXT: PL/pgSQL function error_message() line 5 at GET STACKED DIAGNOSTICS Какие будут мысли и предложения по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 12:52 |
|
||
|
Миграция БД - функция error_message()
|
|||
|---|---|---|---|
|
#18+
Писать в соответствующей процедуре что-то типа Код: plsql 1. 2. где функция someFuncErrorProc () вернет индикатор ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 13:01 |
|
||
|
Миграция БД - функция error_message()
|
|||
|---|---|---|---|
|
#18+
YuriyRusinovПисать в соответствующей процедуре что-то типа Код: plsql 1. 2. где функция someFuncErrorProc () вернет индикатор ошибки. Ага, именно так и сделал - получил обозначенную ошибку. Дело в том, что не смотря на то, что функция error_message() вызывается в контексте исключения, код в самой функции error_message() работает в обычном контексте, где GET STACKED DIAGNOSTICS не применимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 13:06 |
|
||
|
Миграция БД - функция error_message()
|
|||
|---|---|---|---|
|
#18+
И пример отсюда не работает ? Тогда хотелось бы взглянуть на код функции, порождающей exception. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 13:19 |
|
||
|
Миграция БД - функция error_message()
|
|||
|---|---|---|---|
|
#18+
RENO4, заведите структуру. в блоке exception when её заполняйте. и передавайте вашей "обобщённой" ф-ии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 13:29 |
|
||
|
Миграция БД - функция error_message()
|
|||
|---|---|---|---|
|
#18+
YuriyRusinovИ пример отсюда не работает ? Тогда хотелось бы взглянуть на код функции, порождающей exception. Тот пример здесь не применим по вышеозвученной причине. Вот код функции-обертки error_message(), возвращающей текст ошибки, например: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Вот код функции-примера, где провоцируется ошибка - Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 13:33 |
|
||
|
Миграция БД - функция error_message()
|
|||
|---|---|---|---|
|
#18+
qwwqRENO4, заведите структуру. в блоке exception when её заполняйте. и передавайте вашей "обобщённой" ф-ии Это будет работать, но будет по определению ущербно, и задаче не соответствует. Задача как раз в том, чтобы минимизировать изменение исходного кода. А функция-обертка, которая без дополнительных костылей не функционирует, не выполняет возложенной на нее задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 13:36 |
|
||
|
|

start [/forum/topic.php?fid=53&gotonew=1&tid=1996799]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 262ms |

| 0 / 0 |
