gpt4 book ai didi

postgresql - Postgres 异常

转载 作者:行者123 更新时间:2023-11-29 14:15:04 25 4
gpt4 key购买 nike

我需要将一些 Oracle PL/SQL 代码移植到 Postgres。这是我第一次使用 Postgres。

在 Oracle 中,关于异常,我可以这样:

    IF v_customer_id IS NULL OR v_email IS NULL THEN       RAISE invalid_paramters;    END IF;

这在 Postgres 中是如何完成的?基本上验证输入,如果任何验证失败,调用自定义处理程序来执行任何操作。据我所知,Postgres 不支持自定义命名异常。

感谢您的宝贵时间。

最佳答案

您可以将 RAISE 与自定义消息和特定的 sqlstate 常量一起使用:

--Anonymous block for testing purposes
DO $$
BEGIN
RAISE invalid_parameter_value USING MESSAGE = 'Invalid customer or email';
END $$;

或者您可以简单地引发一个通用异常:

DO $$
BEGIN
RAISE EXCEPTION 'A generic exception (P0001)';
END $$;

您还可以处理异常:

DO $$
BEGIN
--This will raise a division by zero
PERFORM 0 / 0;

--You can catch a exception with a EXCEPTION block
EXCEPTION
WHEN division_by_zero THEN
RAISE INFO 'Division by zero catched';
WHEN raise_exception THEN
RAISE INFO 'Another error catched...';
END $$;

并获取有关异常的更多详细信息:

DO $$
DECLARE
error_msg text;
BEGIN
--This will raise a division by zero
PERFORM 0 / 0;

--You can get more about error with GET STACKED DIAGNOSTICS
EXCEPTION
--Tip: OTHERS keyword will catch any exception
WHEN OTHERS THEN
GET STACKED DIAGNOSTICS error_msg = MESSAGE_TEXT;
RAISE EXCEPTION 'My custom exception: %', error_msg;
END $$;

我建议您查看 sqlstatescontrol structures有关 PostgreSQL 中错误处理的更多信息。

关于postgresql - Postgres 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52011823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com