Learning Plpgsql ??

From: Jonathon Batson <jonathon(at)octahedron(dot)com(dot)au>
To: pgsql-novice(at)postgresql(dot)org
Subject: Learning Plpgsql ??
Date: 2003-01-23 01:18:49
Message-ID: 3E2F42F9.2040006@octahedron.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Hi
Newbie to Plpgsql and Postgres.
I am porting dbs from Access97 to postgres, tables and data comes across
fine but the autonumber(sequences) do not
get updated, so I need to do this manually using > SELECT
setval(sequence_name,value);
OK , this is no problem, BUT, I have 90 tables in the db, and around 70
clients to port to postgres.
So a function to do this is needed.

The direction took so far is to create a table, seq_table consisting of
all the sequences information in the db as follows:

sequence_name table_name pk_column
-----------------------------------------------------------------
customer_number_seq customer c_number
purchase_job_number_seq purchase job_number
etc

Then a function that in psuedo code is something like this
for each row in seq_table
get max(pk_column) from table_name
set sequence_name to max
endfor

So my function is:

-- Function: update_seq()
CREATE or REPLACE FUNCTION update_seq() RETURNS text AS '
DECLARE
row RECORD;
maxid INTEGER;

BEGIN
-- select sequence information [ sequence_name, table_name, pk_column]
FOR row IN SELECT * FROM seq_table LOOP

-- get the maxid for row.table_name on row.pkcolumn
SELECT max(row.pk_column) INTO maxid FROM row.table_name;

-- then set the sequence value
SELECT setval(row.sequence_name,maxid);

END LOOP;

RETURN ''done'';
END;
' LANGUAGE 'plpgsql';

The function fails at the line select into line
SELECT max(row.pk_column) INTO maxid FROM row.table_name;
with the following error........something to do with the second var
row.table_name I think.

swimdb=# SELECT update_seq();
NOTICE: Error occurred while executing PL/pgSQL function update_seq
NOTICE: line 14 at select into variables
ERROR: parser: parse error at or near "$2"

Any ideas would be gratefully accepted...
Also a direction on some more detailed PL/pgSQL documentation
Have looked a Postgres Interactive Docs..not so helpfull

Thanks
Jonathon

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Andrew McMillan 2003-01-23 03:22:09 Re: Learning Plpgsql ??
Previous Message Rob Klaus 2003-01-23 01:00:06 ODBC Documentation