OTA*_*TAR 3 postgresql exception plpgsql postgresql-9.2
这是我的代码
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;
Run Code Online (Sandbox Code Playgroud)
也就是说,我需要返回"999",如果发生了除零,但这个: SELECT test_excep(0)
返回错误: division by zero
CONTEXT: PL/pgSQL function test_excep(integer) line 4 at assignment
我的代码有什么问题?
该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;
Run Code Online (Sandbox Code Playgroud)
这是一个正确的函数:
CREATE OR REPLACE FUNCTION test_excep (arg INTEGER) RETURNS INTEGER
AS $$
DECLARE res INTEGER;
BEGIN
res := 100 / arg;
RETURN res;
EXCEPTION
WHEN division_by_zero
THEN RETURN 999;
END;
$$
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
EXCEPTION 部分必须在异常所在的块内,也必须是块的最后一部分。
| 归档时间: |
|
| 查看次数: |
13201 次 |
| 最近记录: |