postgres声明变量不在函数中

时间:2011-03-28 08:47:51

标签: postgresql variables declare

我想在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;           ^ 我希望有人能帮助我

1 个答案:

答案 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