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