我正在尝试在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
但我不明白。你有好主意吗 ?感谢。
答案 0 :(得分:1)
您没有在异常块中使用select的结果。如果您打算运行忽略输出的内容(如PERFORM
,其结果集未放入任何变量,则必须使用SELECT
消息...除非=
表示你想使用INTO ccc
)。