Postgresql,返回错误,异常

时间:2017-02-23 15:54:58

标签: sql postgresql exception

我正在尝试在postgresql存储过程中捕获异常。 没有我的“异常时,其他”,我的程序正在运作。但不要随便。

这是我的代码:

create or replace function test(aaa varchar)
returns table (mmm integer, xxx integer)
as $body$
declare
    ccc             varchar(250);
    ddd     integer;
    xxx     integer;
    mmm         integer;
begin

    select 
        srv_int_id
    into
        mmm
    from
        srv_service
    where
        srv_var_nom = aaa;

    ddd := 1/0;

    xxx := test2(9000,'AAA');

    return query select 
        xxx, 
        mmm;

exception
    when others then
        select ccc = 'Erreur ' || sqlstate || ' dans la procedure test.sql';
        return query select 0,0;

end;
$body$ language plpgsql;

On Squirrel,我有这个错误

  

错误:ERREUR:larequêten'apas de destination pourlesdonnéesrésultantes     Indice:Si vous voulez annulerlesrésultatsd'unSELECT,utilisez PERFORM>地方。    Où:fonction PL / pgsql p_ech_mes_lire_info_message(字符变化),ligne> 44à指令SQL   SQLState:42601   ErrorCode:0

但我不明白。你有好主意吗 ?感谢。

1 个答案:

答案 0 :(得分:1)

您没有在异常块中使用select的结果。如果您打算运行忽略输出的内容(如PERFORM,其结果集未放入任何变量,则必须使用SELECT消息...除非=表示你想使用INTO ccc)。