出于XYZ的原因,如果满足某些条件(在Snowflake上,我需要一个查询来显式失败(将错误代码返回连接))。有人可以推荐一种方法吗?
一些伪代码插图:
IF 0= ( SELECT COUNT(*) FROM XYZ) THEN FAIL
SELECT IFF(true, 1::number, (1/0)::number);
然后:
IFF(TRUE, 1::NUMBER, (1/0)::NUMBER)
1
where-as
SELECT IFF(false, 1::number, (1/0)::number);
给予:
Division by zero
我喜欢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 1 then 'There are rows in the table'
when 0 then raise_error('My error.')
end;
如果XYZ中没有行,它将生成一条错误消息,内容为:
JavaScript执行错误:未捕获->我的错误
这不是最整洁的错误消息,但是如果您需要帮助识别错误的信息,它将允许您嵌入自定义错误消息。箭头应有助于将人们引导到堆栈中引发的实际错误消息。