Объявить переменную не функционирующей по postgres - PullRequest
3 голосов
/ 28 марта 2011

Я хочу объявить переменную в 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" LINE 2: c varchar;^ Я надеюсь, что кто-нибудь может мне помочь

1 Ответ

10 голосов
/ 28 марта 2011

Если вы используете 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 count(*) 
  INTO b
FROM some_table;

Ознакомьтесь также с руководством по этому вопросу:

http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW

...