Я хочу объявить переменную в 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;^ Я надеюсь, что кто-нибудь может мне помочь
Если вы используете 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