Variant (Untyped) parameter for function/procedure

Поиск
Список
Период
Сортировка
От Durumdara
Тема Variant (Untyped) parameter for function/procedure
Дата
Msg-id CAEcMXhkoR7mo3gpF8Jhoq=ui6vgCC5rvKW3e2wF=PfzL=FWJAQ@mail.gmail.com
обсуждение исходный текст
Ответы Re: Variant (Untyped) parameter for function/procedure
Список pgsql-general
Dear Members!

As I experienced, the functions/procedures extremely depend on parameters (very typed).
So if I have to restructure the input parameters, I can't modify the function, because I have to recreate the dependents too.
For example:
I have a type. If I pass this type to a function, I can't change the structure of the type without dropping and recreating the function.

create type blahtype as (a int, b bool);
create function blahcheck (input blahtype) ...

If I have many dependent functions this causes that I have to drop (recreate) everything - just for an extra parameter. And sometimes this extra parameter doesn't change 10 functions, only one. But I have to recreate them all (without changing the body).

Is there any way to use a Variant parameter?
Like this:
create procedure test(IN Input Record, OUT Output Record) 
...
    Time = Input.Time::timestamp;
...
    Output = SomeHowMakeItTyped;
    Output.Result = 1;
...

Caller:
...
for r_in as select  id, name from blah into
...
     test(r_in, r_out);
     if r_out.result <> 0 then ...
Or:
create procedure test(IN Inputs Records, OUT Output Record) 
...
        for Input in Inputs:
        Time = Input.Time::timestamp;
...
    Output.Result = 1;
...



Or is it impossible, because of the PGSQL's philosophy (very typed)?

If it is not possible then I have one way I think. 
It is a JSON data type for inputs and outputs.

Is that right?

Thanks for your any help, info!

Best regards
dd





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

Предыдущее
От: Shammat
Дата:
Сообщение: Re: Poor performance after restoring database from snapshot on AWS RDS
Следующее
От: Russell Mercer
Дата:
Сообщение: Re: Unable to connect to any data source for foreign server