SQL state: 42601. Execption handling.

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?

Browse pgsql-general by date

  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