Re: new stored procedure with OUT parameters

Поиск
Список
Период
Сортировка
От Anton Shen
Тема Re: new stored procedure with OUT parameters
Дата
Msg-id CA+4BxBzekJG4Tsjtewxc=03KtpwcLsePxJ8sRZ+bonpg+MN_Qw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: new stored procedure with OUT parameters  (Pavel Stehule <pavel.stehule@gmail.com>)
Ответы Re: new stored procedure with OUT parameters
Re: new stored procedure with OUT parameters
Список pgsql-general
Thanks for the thoughts. The part I'm missing is that why procedures with OUT param 'will not be called from SQL environments'?

Thanks,
Anton

On Sat, Dec 15, 2018 at 10:03 AM Pavel Stehule <pavel.stehule@gmail.com> wrote:
Hi

út 11. 12. 2018 v 7:20 odesílatel Anton Shen <4175george@gmail.com> napsal:
Hi all,

I was playing around with the stored procedure support in v11 and found that pure OUT parameters are not supported. Is there any reason we only support INOUT but not OUT parameters?

The procedure implementation in v11 is initial stage - only functionality with some simple implementation or without design issues was implemented.

If I remember there was not clean what is correct and expected behave of usage of OUT variable when it is called from SQL environment, and when it is called from plpgsql.

On Oracle - the OUT variables are part of procedure signature - you can write procedures P1(OUT a int), P1(OUT a text). Currently we have not a variables in SQL environment. So if Peter implemented OUT variables now then

a) only IN parameters will be part of signature - like functions - but it is different than on Oracle, and we lost a possibility to use interesting feature
b) the procedures with OUT variables will not be callable from SQL environment - that be messy for users.
c) disallow it.

I hope so PostgreSQL 12 will have schema variables, and then we can implement OUT variables. Now, it is not possible (do it most correct) due missing some other feature. INOUT parameters are good enough, and we have opened door for future correct design.

Regards

Pavel

 

psql (11.0 (Homebrew petere/postgresql))
dev=# CREATE PROCEDURE test_sp(a OUT int) LANGUAGE plpgsql AS $$
dev$# BEGIN
dev$# a = 5;
dev$# END; $$;
ERROR:  procedures cannot have OUT arguments
HINT:  INOUT arguments are permitted.

Thanks,
Anton

В списке pgsql-general по дате отправления:

Предыдущее
От: Dave Cramer
Дата:
Сообщение: Re: loading jdbc Driver in servlet
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: new stored procedure with OUT parameters