yes!! I solved using quote_nullable on hrec[k]. I was convinced string || NULL --> string
but I'm wrong. Thanks!! Il giorno mer 5 lug 2023 alle ore 15:53 Erik Wienhold <e...@ewie.name> ha scritto: > > On 05/07/2023 14:23 CEST Lorusso Domenico <domenico....@gmail.com> > wrote: > > > > Hello guys, > > here a simple function > > > > CREATE OR REPLACE FUNCTION bind_action( > > sqlstr text, > > hrec hstore) > > RETURNS text > > LANGUAGE 'plpgsql' > > COST 100 > > immutable PARALLEL SAFE > > AS $BODY$ > > declare > > _sqlstr text=sqlstr; > > _k text; > > _debug text; > > begin > > _debug= '--Start' || _sqlstr; > > foreach _k in array akeys(hrec) loop > > _debug =_debug || format($$ > > hstore: %s %s > > sqlStr:$$, _k, hrec[_k]); > > _sqlstr=replace(_sqlstr, ':'||_k||':', hrec[_k]); > > _debug =_debug || _sqlstr; > > > > end loop; > > > > raise notice 'final %',_debug; > > return _sqlstr; > > end; > > $BODY$; > > > > and here a simple test > > do > > $$ > > declare > > sqlstr text=':id::bignt,:surpa:,:disfa:'; > > hs hstore; > > begin > > hs['id']=789; > > hs['disfa']='ssssssss'; > > raise notice '%',bind_action(sqlstr,hs); > > end; > > $$; > > > > and it works. > > But... > > When I call this function in a function called by a trigger it down't > work > > _debug variable becomes null, also _sqlstr becomes null... > > Does the hstore contain nulls? Function replace returns null in that case. > > Please show us the trigger, its function, and a reproducer. > > -- > Erik > -- Domenico L. per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.]