Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 TRY CATCH  [new]
sibir127
Member

Откуда:
Сообщений: 21
Приветствую! Подскажите почему не работает конструкция, я не могу понять по справочнику MS SQL?

begin try
select jhdfglkfdsajhg
from [QueryWork].[dbo].[my_tbl]
end try
begin catch
SELECT ERROR_NUMBER() AS 'Номер ошибки',
       ERROR_MESSAGE() AS 'Описание ошибки',
	   ERROR_LINE() AS 'Строка ошибки'
end catch;
GO


ошибка имеет уровень выше 10, но не могу найти ограничение на использование, отсюда не понимаю, почему не работает.
Сообщение 207, уровень 16, состояние 1, строка 3
Недопустимое имя столбца "jhdfglkfdsajhg".
25 июл 19, 16:57    [21934612]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
sibir127,

автор
The following types of errors are not handled by a CATCH block when they occur at the same level of execution as the TRY...CATCH construct:

Compile errors, such as syntax errors, that prevent a batch from running.

Errors that occur during statement-level recompilation, such as object name resolution errors that occur after compilation because of deferred name resolution.

Object name resolution errors
25 июл 19, 16:59    [21934618]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7762
sibir127,

не могу найти... Искал везде, кроме справки... Где светло, а не где потерял.
25 июл 19, 17:09    [21934625]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
sibir127
Member

Откуда:
Сообщений: 21
А так в хелпе микрософта написано. Как читать? порекомендуйте мануал чтоб с версиями свободного перевода не мучится.

Следующие типы ошибок обрабатываются блоком CATCH, если они возникают на том же самом уровне выполнения, что и конструкция TRY...CATCH.
Ошибки компиляции, такие как ошибки синтаксиса, в результате которых пакет не будет выполнен.
Ошибки, происходящие во время повторной компиляции уровня инструкций, такие как ошибки разрешения имен объектов, которые происходят после компиляции из-за отложенного разрешения имен.
Ошибки разрешения имен объектов
25 июл 19, 21:21    [21934832]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
sibir127
Member

Откуда:
Сообщений: 21
Владислав Колосов,
)))
25 июл 19, 21:36    [21934841]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
sibir127
Следующие типы ошибок обрабатываются блоком CATCH
Не обрабатываются.
are not handled by
sibir127
порекомендуйте мануал чтоб с версиями свободного перевода не мучится.
Так есть же хелп на русском.
26 июл 19, 02:03    [21934937]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
sibir127,

автор
Как читать?

Слева направо. Читать всегда английскую.
26 июл 19, 08:42    [21934976]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
sibir127
А так в хелпе микрософта написано. Как читать? порекомендуйте мануал чтоб с версиями свободного перевода не мучится.


"мануал" - это уже версия "свободного перевода" для мазохистов, то есть, чтобы "мучитЬся"
26 июл 19, 10:31    [21935092]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
MaksK
Member

Откуда:
Сообщений: 6
sibir127, конструкция try catch - определяет ошибки в ходе выполнения транзакции. В Вашем случае до выполнения дело не доходит, поскольку сервер не может выполнить запрос из-за ошибки синтаксиса (в данном случае отсутствие поля в таблице). Что Вас удивляет ???
26 июл 19, 13:24    [21935323]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
MaksK
sibir127, конструкция try catch - определяет ошибки в ходе выполнения транзакции. В Вашем случае до выполнения дело не доходит, поскольку сервер не может выполнить запрос из-за ошибки синтаксиса (в данном случае отсутствие поля в таблице). Что Вас удивляет ???

нагородили отсебятины
26 июл 19, 13:28    [21935328]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
TaPaK
Читать всегда английскую.
А, так это в русской справке неправильно перевели...
Ок, запостил баг.
26 июл 19, 13:35    [21935334]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
MaksK
Member

Откуда:
Сообщений: 6
TaPaK, решение в студию...
26 июл 19, 14:16    [21935389]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
MaksK
TaPaK, решение в студию...

решение уже дал: "нагородили отсебятины"
26 июл 19, 14:17    [21935391]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
sibir127
Member

Откуда:
Сообщений: 21
Я разобрался, оформил все в процедуру и поставил контроль на исполнении процедуры, получил уровень выше и все заработало.
Бойтесь машинного перевода статей мелкогопрограммногообеспечения.
26 июл 19, 15:06    [21935465]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
sibir127
А так в хелпе микрософта написано. Как читать? порекомендуйте мануал чтоб с версиями свободного перевода не мучится.

Следующие типы ошибок обрабатываются блоком CATCH, если они возникают на том же самом уровне выполнения, что и конструкция TRY...CATCH.
Ошибки компиляции, такие как ошибки синтаксиса, в результате которых пакет не будет выполнен.
Ошибки, происходящие во время повторной компиляции уровня инструкций, такие как ошибки разрешения имен объектов, которые происходят после компиляции из-за отложенного разрешения имен.
Ошибки разрешения имен объектов
Всё, я поправил хелп :-)
https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/try-catch-transact-sql?view=sql-server-2017#errors-unaffected-by-a-trycatch-construct
31 июл 19, 10:01    [21938561]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
sibir127
Я разобрался, оформил все в процедуру и поставил контроль на исполнении процедуры, получил уровень выше и все заработало.
Бойтесь машинного перевода статей мелкогопрограммногообеспечения.


О, другое дело, вот теперь видно, что ТС - крупнопрограммный гуру, которого сбили с толку долбаные "мелкопрограммные".
Переходите на Linux+MySQL, там пока нет "мелкогопрограммногообеспечения"
31 июл 19, 11:35    [21938675]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Ролг Хупин
Переходите на Linux+MySQL, там пока нет "мелкогопрограммногообеспечения"
Разумеется, ведь по Linux+MySQL всегда есть абсолютно полная документация, которую "сообщество" синхронно и безошибочно переводит на все существующие языки!
31 июл 19, 12:03    [21938723]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Автору:
Общее решение без создания хранимой процедуры - Dynamic SQL.
Поместите ваш SELECT с абракодаброй в строковую константу (или переменную)и выполните через EXEC(...)
или sp_executesql.
2 авг 19, 22:09    [21941029]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
Gator
Member

Откуда: Москва
Сообщений: 14981
Yuri Abele> Поместите ваш SELECT с абракодаброй в строковую константу (или переменную)и выполните через EXEC(...)
или sp_executesql.
И получите просадку и сервера и запроса
3 авг 19, 16:59    [21941236]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
msLex
Member

Откуда:
Сообщений: 8091
Gator
И получите просадку и сервера и запроса

И почему же?
3 авг 19, 21:45    [21941323]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
Gator
Member

Откуда: Москва
Сообщений: 14981
msLex, Поскольку СУБД необходимо создать план доступа во время выполнения для динамических инструкций SQL, динамического SQL обычно медленнее, чем статического SQL. Статистики 0 и прочие ямы
4 авг 19, 11:48    [21941497]     Ответить | Цитировать Сообщить модератору
 Re: TRY CATCH  [new]
Sergey Syrovatchenko
Member

Откуда:
Сообщений: 134
Gator
динамического SQL обычно медленнее, чем статического SQL. Статистики 0 и прочие ямы

Вообще-то планы по динамике кешируются, если не указано OPTION(RECOMPILE)
Статистика для динамики используется на тех же принципах что и в обычных запросах
И только некоторые нюансы вроде INSERT EXEC будут снижать перформанс потому что вставка будет идти через tempdb а потому уже в целевую таблицу

Про какие прочие ямы и статистику 0 вы говорите?
4 авг 19, 14:08    [21941539]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить