> Hi, > > I have already read this > http://www.postgresql.org/docs/9.2/static/rowtypes.html#AEN7304 > but it didn't help. > > CREATE TABLE nodes ( > id SERIAL NOT NULL PRIMARY KEY, > name TEXT NOT NULL > ); > > CREATE TYPE pathId AS ( > id INTEGER, > node nodes > ); > > CREATE OR REPLACE FUNCTION test_AEN7304() RETURNS void AS $$ > DECLARE > r pathId; > n nodes; > BEGIN > n.name := 'abc'; > r.id := 1; > r.node := n; -- All is ok > -- r.node.name := 'def'; -- << Error here > -- (r).node.name := 'def'; -- << and here > ((r).node).name := 'def'; -- << and here > END; > $$ LANGUAGE 'plpgsql'; > > And I can't even make 'n' as ALIAS FOR r.node (to simulate C-like pointer). > > What is the right syntax? > Thanks
I have verified that plpgsql doesn't allow assignment like r.node.name='def' or (r).node.name or ((r).node).name
In Above case, you can use some variable like n and update the n composite variable and assigned it to r.node as you have already done in plpgsql.
Thanks & Regards, Vibhor Kumar EnterpriseDB Corporation The Enterprise PostgreSQL Company Blog:http://vibhork.blogspot.com