使SQL查询在条件上失败

问题描述 投票:0回答:2

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

一些伪代码插图:

IF 0= ( SELECT COUNT(*) FROM XYZ) THEN FAIL
sql snowflake-cloud-data-platform
2个回答
2
投票
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

0
投票

我喜欢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执行错误:未捕获->我的错误

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

© www.soinside.com 2019 - 2024. All rights reserved.