ПОПРОБУЙТЕ ЛОВУТЬ в SQL Server - PullRequest
       3

ПОПРОБУЙТЕ ЛОВУТЬ в SQL Server

5 голосов
/ 26 октября 2010

Я использую SQL Server 2008. Я попытался выполнить следующее:

BEGIN TRY
    SELECT 1/0;
END TRY
BEGIN CATCH
    PRINT 'ERROR'
END CATCH;

Но я получаю следующую ошибку:

>Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'TRY'.
Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'END'.

Может кто-нибудь сказать мне, как выполнить try catch в SQL Server?

Ответы [ 4 ]

8 голосов
/ 26 октября 2010

Это полностью допустимый оператор для SQL Server 2005 и выше, поэтому я бы проверил ваш уровень совместимости, используя sp_dbcmptlevel (Transact-SQL) :

exec sp_dbcmptlevel 'YourDatabaseName'

80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008

Я думаю, что он вернется на 80 или ниже, кажется, что он не знает BEGIN TRY, только BEGIN. BEGIN TRY был добавлен в SQL Server 2005.

2 голосов
/ 28 мая 2011
Begin try
  Begin transaction
    --------
    --------
  Commit transaction
End try
Begin catch
  Rollback transaction
End catch

http://intquesans.blogspot.com/2011/05/how-we-can-use-try-catch-in-sql.html

2 голосов
/ 25 мая 2011

Если у вас все еще есть эта ошибка, возникает вопрос, вставили ли вы раздел BEGIN CATCH ... END CATCH. Если нет, вы получите эту ошибку.Если у вас есть раздел BEGIN TRY ... END TRY без кода T-SQL, он также выдаст ошибку.

Не думаю, что это полезно, когда люди говорят вам, что вы используетеSQL Server 2000. Скорее всего, это проблема кодирования T-SQL, поскольку вы, как правило, знаете, на каком сервере вы работаете.

2 голосов
/ 26 октября 2010

Хорошо работает и у меня, без редактирования, на SQL Server 2008.

...