Re: Dynamic binding issue - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Dynamic binding issue
Date
Msg-id 6cef623d-782c-913b-7c9e-6e9be3b0e6d8@aklaver.com
Whole thread Raw
In response to Dynamic binding issue  (Lorusso Domenico <domenico.l76@gmail.com>)
Responses Re: Dynamic binding issue
List pgsql-general
On 6/12/23 15:13, Lorusso Domenico wrote:
> Hello guys,
> I'm a problem with dynamic sql.
> I am trying to write a generic function that is able to read and update 
> a table based on some data coming from e previous record.
> Here the example
> _sqlStr=format('select *
>    from  %1$s.%2$s
>    where (' || array_to_string(_activeRec.pk_columns_list, ',') || ') in 
> (select ' ||
>    'row($1[''' || array_to_string(_activeRec.pk_columns_list, 
> '''],$1[''') || ''']))'
>    , _activeRec.name_of_schema, _activeRec.main_table);
> 
> execute _sqlStr using oldRec into _rec;
> 
> My problem is oldRec is a type record, so the substitution performed by 
> execute fails, because it can't recognize the field if the variable is 
> record and not a specific composite record type.

Why not use a row type?:

https://www.postgresql.org/docs/current/plpgsql-declarations.html#PLPGSQL-DECLARATION-ROWTYPES

> 
> I suppose this is a recurrent question, but I can't find a solution...
> 
> -- 
> Domenico L.

-- 
Adrian Klaver
adrian.klaver@aklaver.com




pgsql-general by date:

Previous
From: Lorusso Domenico
Date:
Subject: Dynamic binding issue
Next
From: Merlin Moncure
Date:
Subject: Re: Question about where to deploy the business logics for data processing