Инструменты пользователя

Инструменты сайта


it:postgresql:exception

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

it:postgresql:exception [2023/12/14 18:07] – создано ura2404it:postgresql:exception [2023/12/14 18:16] (текущий) ura2404
Строка 2: Строка 2:
  
 [[https://habr.com/ru/articles/657667/]] - {{it:postgresql:exception:try_-_catch_v_postgresql.mht|mht}} - TRY / CATCH в PostgreSQL [[https://habr.com/ru/articles/657667/]] - {{it:postgresql:exception:try_-_catch_v_postgresql.mht|mht}} - TRY / CATCH в PostgreSQL
 +
 +
 +__**Полный список переменных, которые можно получить командой GET STACKED DIAGNOSTICS**__
 +
 +^Имя^Тип^Описание^
 +|RETURNED_SQLSTATE|text|код исключения|
 +|COLUMN_NAME|text|имя столбца, относящегося к исключению|
 +|CONSTRAINT_NAME|text|имя ограничения целостности, относящегося к исключению|
 +|PG_DATATYPE_NAME|text|имя типа данных, относящегося к исключению|
 +|MESSAGE_TEXT|text|текст основного сообщения исключения|
 +|TABLE_NAME|text|имя таблицы, относящейся к исключению|
 +|SCHEMA_NAME|text|имя схемы, относящейся к исключению|
 +|PG_EXCEPTION_DETAIL|text|текст детального сообщения исключения (если есть)|
 +|PG_EXCEPTION_HINT|text|текст подсказки к исключению (если есть)|
 +|PG_EXCEPTION_CONTEXT|text|строки текста, описывающие стек вызовов в момент исключения|
 +
 +
 +__**Пример**__
 +<code sql>
 +BEGIN
 +  -- код, в котором может возникнуть исключение
 +EXCEPTION WHEN OTHERS  
 +THEN
 + GET STACKED DIAGNOSTICS
 +    err_code = RETURNED_SQLSTATE, -- код ошибки
 + msg_text = MESSAGE_TEXT, -- текст ошибки
 +    exc_context = PG_CONTEXT, -- контекст исключения
 + msg_detail = PG_EXCEPTION_DETAIL, -- подробный текст ошибки
 + exc_hint = PG_EXCEPTION_HINT; -- текст подсказки к исключению
 +
 +    RAISE NOTICE 'ERROR CODE: % MESSAGE TEXT: % CONTEXT: % DETAIL: % HINT: %', 
 +    err_code, msg_text, exc_context, msg_detail, exc_hint;
 +END
 +</code>
 +
 +Результаты обработки ошибки будут выведены на консоль (пример ошибки деления на 0):
 +<code>
 +ERROR CODE: 22012 
 +MESSAGE TEXT: деление на ноль 
 +CONTEXT: функция PL/pgSQL catch_exception(integer,integer), строка 14, оператор 
 +GET STACKED DIAGNOSTICS
 +SQL-оператор: "SELECT e.res FROM catch_exception(4, 0) AS e"
 +функция PL/pgSQL inline_code_block, строка 5, оператор SQL-оператор
 +Result: 0
 +</code>
it/postgresql/exception.1702577221.txt.gz · Последнее изменение: 2023/12/14 18:07 — ura2404