Re: [HACKERS] PL/pgSQL - for discussion (RETURN)
От | jwieck@debis.com (Jan Wieck) |
---|---|
Тема | Re: [HACKERS] PL/pgSQL - for discussion (RETURN) |
Дата | |
Msg-id | m0yDThY-000BFRC@orion.SAPserv.Hamburg.dsh.de обсуждение исходный текст |
Ответ на | Re: [HACKERS] PL/pgSQL - for discussion (RETURN) (Zeugswetter Andreas <andreas.zeugswetter@telecom.at>) |
Список | pgsql-hackers |
Andreas wrote: > > > Returning from the function > > > > RETURN <expr>; > > > > The function terminates and the value of <expr> will be > > returned to the upper executor. The return value of a > > function cannot be undefined. If control reaches the end > > of the toplevel block of the function without hitting a > > RETURN statement, a runtime error will occur. > > 1. I think we should allow functions/procedures, that don't have a return value. > (think about a proc that only does an update, why return anything except an error) > 2. I think the RETURN will need a WITH RESUME, so a procedure can return more than one row. > > create dba procedure "dns".getusers() > returning varchar(16), smallint; > define gotuser varchar(16); > define gotadmin smallint; > execute procedure checkadmin(); > foreach select uname, admin into gotuser, gotadmin from passwd > return gotuser, gotadmin with resume; > end foreach; > end procedure; Yup. Looks nice. But the executor neither supports sets of tuples nor single tuple to be returned from functions (except for 'sql' language functions). I hacked around on that with the PL/Tcl and even if I return a heap tuple or a tuple table slot to the upper executor, it doesn't work :-( Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #======================================== jwieck@debis.com (Jan Wieck) #
В списке pgsql-hackers по дате отправления: