Документация для PL / PGSQL говорит, что объявление и присвоение переменных выполняются с : =
.
Но простой, короче и более современный (см. Сноску) =
, кажется, работает как ожидалось:
CREATE OR REPLACE FUNCTION foo() RETURNS int AS $$
DECLARE
i int;
BEGIN
i = 0;
WHILE NOT i = 25 LOOP
i = i + 1;
i = i * i;
END LOOP;
RETURN i;
END;
$$ LANGUAGE plpgsql;
> SELECT foo();
25
Обратите внимание, что PL / PGSQL может отличить назначение и сравнение, как показано в Линия
WHILE NOT i = 25 LOOP
Итак, вопросы:
=
вместо : =
? Редактирование / сноска:
Пожалуйста, возьмите «более современную» часть с подмигиванием, как в Краткое, неполное и в основном неправильная история языков программирования :
1970 - Niklaus Wirth создает Паскаль, процессуальный язык. Критики Немедленно осуждайте Паскаль, потому что он использует синтаксис «X: = X + Y» Вместо более знакомого C-подобного «X = X + Y». Эта критика случается, несмотря на то, что C еще не был изобретен.
1972 - Деннис Ричи изобретает мощный пистолет, который стреляет как вперед и назад одновременно. Не удовлетворен количеством смертей и постоянные добрасывания из этого изобретения он изобретает C и Unix.