Обсуждение: sql script confusion
I am in the process of testing PostGreSQL for our sales and product
database and I am a little confused about SQL scripting and various
available languages. (My background is mostly MSSQL Server).
I am using the PGAdmin tool and I would like to write a script to
update all sequences to the current max value in the table.
Do I need to use a specific language in a function to do this or does
it work as native SQL, as it would in T-SQL?
What I would like to do is something like -
(pseudo code)
declare cursor for select relname from pg_statio_user_sequences
open cursor
fetch next into var_relname
while not cursor.eof
set var_tblname=substring(var_relname, "0 until _")
set var_fieldname=substring(var_relname,"first _ until 2nd _")
select var_maxID=max(var_fieldname) from var_tblname
ALTER SEQUENCE var_relname
RESTART WITH var_maxID+1;
fetch next into var_relname
end loop
Can dynamic statements be written in "raw sql" or do they need to be
encompassed in a language? Do all language scripts have to be
functions or can I do something like:
Start Language Processing Here
...Code
End Language Processing
Thank You
Sim Zacks
IT Manager
CompuLab
04-829-0145 - Office
04-832-5251 - Fax
Sim Zacks wrote: > Do I need to use a specific language in a function to do this or does > it work as native SQL, as it would in T-SQL? You need to use a specific language. > What I would like to do is something like - > (pseudo code) > declare cursor for select relname from pg_statio_user_sequences > open cursor > fetch next into var_relname > while not cursor.eof > set var_tblname=substring(var_relname, "0 until _") > set var_fieldname=substring(var_relname,"first _ until 2nd _") > select var_maxID=max(var_fieldname) from var_tblname > ALTER SEQUENCE var_relname > RESTART WITH var_maxID+1; > fetch next into var_relname > end loop For this plpgsql might be a good choice. Think sql with a few loop/control structures and variables. > Can dynamic statements be written in "raw sql" or do they need to be > encompassed in a language? Do all language scripts have to be > functions or can I do something like: > Start Language Processing Here > ...Code > End Language Processing You need to create a function and then call it. You can create dynamic SQL as a string and then EXECUTE it with plpgsql. The other languages offer various ways too. -- Richard Huxton Archonet Ltd