处理异常并从函数返回结果 [英] Handling EXCEPTION and return result from function

查看:103
本文介绍了处理异常并从函数返回结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码

CREATE OR REPLACE FUNCTION test_excep (arg INTEGER) RETURNS INTEGER 
AS $$
    DECLARE res INTEGER;
    BEGIN
        res := 100 / arg;

        BEGIN
            EXCEPTION
            WHEN division_by_zero 
            THEN  RETURN 999;
        END;


        RETURN res;
    END;



$$
LANGUAGE plpgsql;

也就是说,如果被零除,我需要返回"999",但这是:SELECT test_excep(0)

That is, I need returned "999", if happened division by zero, but this: SELECT test_excep(0)

返回错误:division by zero CONTEXT: PL/pgSQL function test_excep(integer) line 4 at assignment

returns error: division by zero CONTEXT: PL/pgSQL function test_excep(integer) line 4 at assignment

我的代码有什么问题?

推荐答案

EXCEPTION子句必须与异常位于同一块中.

The EXCEPTION clause needs to be in the same block as the exception.

例如:

CREATE OR REPLACE FUNCTION test_excep (arg integer)
  RETURNS integer
AS
$func$
DECLARE
   res INTEGER;
BEGIN

res := 100 / arg;

RETURN res;

EXCEPTION
    WHEN division_by_zero 
    THEN  RETURN 999;

END
$func$
LANGUAGE plpgsql;

这篇关于处理异常并从函数返回结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆