我正在做一些脚本测试,我想确保如果我在此Try Catch中测试更新子句:
BEGIN TRY
BEGIN TRAN
UPDATE NAME
SET NAME.ADDBY =
(CASE WHEN NAME.ADDBY = 'CONVERSION' THEN 'CONVERTED'
WHEN NAME.ADDBY = 'CJDOG'THEN 'CJDAREME'
WHEN NAME.ADDBY = 'npalerm' THEN 'REALLYLONGDETAILEDTEXT'
ELSE NAME
END)
COMMIT TRAN
END TRY
BEGIN CATCH
IF @@TRANCOUNT >0
PRINT ERROR_MESSAGE()
ROLLBACK TRAN
END CATCH
PRINT @@TRANCOUNT
失败,其他行都会更新,只有那些没有错误的行会通过 Currenty 因为它在TRY CATCH中有一个ROLLBACK可以确保没有任何内容通过。
但是当我尝试只运行UPDATE部分时,错误会终止整个脚本,而不是更新那些不会导致错误的脚本,在这种情况下,npalerm太长了。
任何想法?
我知道它有一个很长的desc我可以只包含更新,但为了详细的目的,我把它包含在Catch中。