5

我想在 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

但错误 ERROR:在“varchar” LINE 2 处或附近出现语法错误:c varchar;^ 我希望任何人都可以帮助我

4

1 回答 1

13

如果您使用的是 9.0,则可以使用 DO 语句使用匿名块:

http://www.postgresql.org/docs/current/static/sql-do.html

在 9.0 之前,您不能使用匿名 pl/pgSQL 块,您需要为此创建一个函数。

此外,您的 pl/pgSQL 语法完全错误。

不能在同一行中有赋值语句和 WHILE 语句。您还缺少 WHILE 循环的其他必需关键字。

请参阅手册以了解正确的语法:

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

于 2011-03-28T09:00:15.343 回答