Thread: selecting into a variable like @var=select ...
hello list, I want to do something like the following: address=# @var = select max(id) from passwd; ERROR: parser: parse error at or near "@" at character 1 address=# var = select max(id) from passwd; ERROR: parser: parse error at or near "var" at character 1 address=# :var = select max(id) from passwd; ERROR: parser: parse error at or near ":" at character 1 address=# so that I could then issue create sequence passwd_id_seq start @var increment 1 how can I declare and capture output into this variable? Or, should I create a function, if it is possible to issue a "create"statement inside a procedure body? -- joe speigle
On Tuesday 16 December 2003 17:12, joseph speigle wrote: > hello list, > > I want to do something like the following: > > address=# @var = select max(id) from passwd; > ERROR: parser: parse error at or near "@" at character 1 > so that I could then issue > > create sequence passwd_id_seq start @var increment 1 > > how can I declare and capture output into this variable? Or, should I > create a function, if it is possible to issue a "create" statement inside a > procedure body? You'll have to use a function (plpgsql would be the obvious choice). You can issue almost all statements by building them up in a string and using EXECUTE. -- Richard Huxton Archonet Ltd
thanks for your help. I have put off this project. Of the two mysql2pgsql scripts at http://developer.postgresql.org/docs/pgsql/contrib/mysql,I edited "mysql2pgsql" (perl script) for a few hours to convertmysql enum ('abc','def') to create a new table which would be referenced from the postgres table to provide the enumquality under the guise of "constraint REFERENCES ${table_name}_${column_name}_constraint_table." However, I will stopthere and will not fix the sequence creation part of http://developer.postgresql.org/docs/pgsql/contrib/mysql/mysql2pgsql(same file as the one at http://sourceforge.net/projects/docman/)which is broken at this moment. I submitted my fix as a patch to http://sourceforge.net/projects/docman/which should reach the gentleman in charge of it. However I think the better workingcopy is http://developer.postgresql.org/docs/pgsql/contrib/mysql/my2pg.pl which appears to have a working sequencegeneration routine. On Tue, Dec 16, 2003 at 06:12:40PM +0000, Richard Huxton wrote: > On Tuesday 16 December 2003 17:12, joseph speigle wrote: > > hello list, > > > > I want to do something like the following: > > > > address=# @var = select max(id) from passwd; > > ERROR: parser: parse error at or near "@" at character 1 > > > so that I could then issue > > > > create sequence passwd_id_seq start @var increment 1 > > > > how can I declare and capture output into this variable? Or, should I > > create a function, if it is possible to issue a "create" statement inside a > > procedure body? > > You'll have to use a function (plpgsql would be the obvious choice). You can > issue almost all statements by building them up in a string and using > EXECUTE. > > -- > Richard Huxton > Archonet Ltd > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faqs/FAQ.html -- joe speigle
On Tue, 2003-12-16 at 13:12, Richard Huxton wrote: > On Tuesday 16 December 2003 17:12, joseph speigle wrote: > > hello list, > > > > I want to do something like the following: > > > > address=# @var = select max(id) from passwd; > > ERROR: parser: parse error at or near "@" at character 1 > > > so that I could then issue > > > > create sequence passwd_id_seq start @var increment 1 > > > > how can I declare and capture output into this variable? Or, should I > > create a function, if it is possible to issue a "create" statement inside a > > procedure body? > > You'll have to use a function (plpgsql would be the obvious choice). You can > issue almost all statements by building them up in a string and using > EXECUTE. > why not just do: begin; create sequence passwd_id_seq; select setval('passwd_id_seq',(select max(id) from passwd)); commit; Robert Treat -- Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL