我想在postgres中声明变量但不在函数中声明...
Declare
c varchar;
a integer;
b integer;
select b = count (*) from table
set a = 1
while a <= b
begin
select c = [c] from table where id = a
if (c = '1')
insert into table2 select(*) from table
end
set a = a+1
但错误错误:“varchar”或附近的语法错误 第2行:c varchar; ^ 我希望有人能帮助我
答案 0 :(得分:10)
如果您使用的是9.0,则可以使用DO语句使用匿名块:
http://www.postgresql.org/docs/current/static/sql-do.html
在9.0之前你不能使用匿名的pl / pgSQL块,你需要为此创建一个函数。
此外,您的pl / pgSQL语法完全错误。
您不能在同一行中拥有作业和WHILE语句。您还缺少WHILE循环的其他requird关键字。
请参阅手册以了解正确的语法:
http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#AEN50163
从select到变量读取值的语法也是错误的。
检索SELECT结果的正确语法是:
SELECT count(*)
INTO b
FROM some_table;
查看手册:
http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW