Community, is that behavior is  explainable ?
 
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?
 
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
   
----------------------------------------------------------------------
 
 
 

Reply via email to