使SQL查询在条件下失败



由于XYZ原因,如果满足某些条件(在Snowflake上(,我需要一个查询显式失败(向连接返回错误代码(。有人能推荐一种方法吗?

伪代码中的一些说明:

IF 0= ( SELECT COUNT(*) FROM XYZ) THEN FAIL

我喜欢Simeon的方法,但如果它在长脚本中运行,您可能需要自定义错误消息。在JavaScript UDF中抛出错误将允许自定义(如果不整洁(错误消息:

create or replace function RAISE_ERROR(MESSAGE string)
returns string
language javascript
as
$$
throw "-->" + MESSAGE + "<--";
$$;
select 
case (select count(*) from XYZ)
when 0 then raise_error('My custom error.')
else 'There are rows in the table'
end
;

如果XYZ中没有行,它将生成一条错误消息,内容为:

JavaScript执行错误:未捕获-->我的自定义错误<--。在RAISE_ERROR中throw MESSAGE;'位置4堆叠轨迹:RAISE_ERROR行:2

它不是最整洁的错误消息,但如果您需要识别错误的帮助,它将允许您嵌入自定义错误消息。箭头应该有助于将人们引导到堆栈中抛出的真实错误消息。

SELECT IFF(true, 1::number, (1/0)::number);    

然后:

IFF(TRUE, 1::NUMBER, (1/0)::NUMBER)
1

其中作为

SELECT IFF(false, 1::number, (1/0)::number);    

给出:

Division by zero

最新更新