我想知道当Azure数据仓库中出现错误时,是否有方法终止SQL进程。
例如:
BEGIN TRY
PRINT 'a';
THROW 60000,'xyz',1
PRINT 'b'
END TRY
BEGIN CATCH
Print 'catched'
END CATCH
Print 'c'
Print 'd'
当前代码的输出为:a,catched,c,d。
所需的输出是一个,catched。此外,我将把try-catch块包装在while循环中,并在其外部打印"c"、"d"。
我试过";"SET NOEXEC OFF";,但不在Azure数据仓库中工作。
编辑:整个逻辑将在存储过程中
有人能帮我吗?
谢谢!
为什么不能在Try块内移动Print 'c' Print 'd'
?另一种选择是使用事务块。这将是极端的,但也有这样的选择:https://stackoverflow.com/a/804811/8104777
将return
添加到catch
块以终止执行:
BEGIN TRY
PRINT 'a';
THROW 60000,'xyz',1
PRINT 'b'
END TRY
BEGIN CATCH
Print 'catched' -- Caught.
return
END CATCH
Print 'c'
Print 'd'