由于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