From: | Ц <pfunk(at)mail(dot)ru> |
---|---|
To: | pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org> |
Subject: | SQL state: 42601. Execption handling. |
Date: | 2022-06-07 13:11:29 |
Message-ID: | 1654607489.576623819@f729.i.mail.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Community, is that behavior is explainable ?
create or replace function dbo.func(result out int ) as $$ begin result = 1 ; end ; $$ language plpgsql;
-- 1 --
do $$
declare
v_result int ;
begin
select p.result from dbo.func(d) p into v_result;
exception when SQLSTATE '42601' then
raise '42601' ;
when others then
raise 'others' ;
end ;
$$
--Exception is handled. This is OK.
ERROR: others
CONTEXT: PL/pgSQL function inline_code_block line 9 at RAISE
********** Error **********
ERROR: others
SQL state: P0001
Context: PL/pgSQL function inline_code_block line 9 at RAISE
-- 2 --
do $$
begin
select p.result from dbo.func() p into v_result;
exception when SQLSTATE '42601' then
raise '42601' ;
when others then
raise 'others' ;
end ;
$$
--Exception is not handled. This is the question.
ERROR: "v_result" is not a known variable
LINE 3 : select p.result from dbo.func() p into v_result;
********** Error **********
ERROR: "v_result" is not a known variable
SQL state: 42601
Character : 57
I suppose the reason of such behavior in different steps of code parsing, but can`t find any discussions or topics in documentation.
Сould someone clarify the situation for sure?
From | Date | Subject | |
---|---|---|---|
Next Message | Ц | 2022-06-07 14:19:02 | SQL state: 42601. Execption handling. |
Previous Message | Peter Eisentraut | 2022-06-07 12:05:32 | Re: psql 15beta1 does not print notices on the console until transaction completes |