如果子查询未返回结果,则引发错误(MS SQL SERVER)



在DB2中,如果子查询在联合和raise_error标量函数的帮助下没有返回结果,则可能引发错误。

但是如何在sql server中做到这一点

到目前为止,我检查了标量函数,但没有可以在单个查询中使用的引发错误函数。

用例是关于在导出数百万条记录的过程中在另一个表中查找匹配的值。因此,对于查询中的每一条记录,都会查找一个匹配的值。这样做的目的是,如果某条记录没有匹配的值,就会引发一个错误,这样就可以尽早检测到它,而不是在整个查询运行之后。

db2的示例(注意:子查询需要替换为有意义的内容…(:

SELECT 
COALESCE(
(SELECT 1 FROM SYSIBM.SYSDUMMY1 LIMIT 0), 
RAISE_ERROR('70NUL', 'Value is missing')) 
FROM 
SYSIBM.SYSDUMMY1;

这是我将继续使用的解决方案:

SELECT COALESCE ((select 1), 'Query aborted. This is the error message' / 0);
-- returns 1
SELECT COALESCE ((select null), 'Query aborted. This is the error message' / 0);
-- query aborts showing message
SELECT COALESCE ((select null WHERE 1=2), 'Query aborted. This is the error message' / 0);
-- query aborts showing message

您正在查找RAISEERROR:

RAISERROR ('Oups', 1, 1)

编辑

正如Lamu所指出的,使用THROW也是可能的,就像在中一样

PRINT 'In catch block.';  
THROW;

最新更新