++l_ бла бла бла, вот так попробуй или спереди сходу не скажу какая из них сначала делает инкремент а какая после
cast(++i_district_code as int) - так не выдает ошибки, но не работает cast(i_district_code++ as int) - так выдает ошибку
В теории ++var должно исполниться до, var++ после действия. Ещё так странно postgresql обрабатывает ошибки. Не всегда ясно в какой строке ошибка. Или в чем она заключается. Благодаря этому крайне сложно написать функцию. Приходиться мелкими шагами идти к результату.
там у тебя поди проблема что надо сначало привести переменную к int и толкьо потом делать инкремент, а у тебя сейчас наоборот
+1 без присваивания
Если не присваивать, то получиться что я не запомню счетчик и будет на следующей итерации тоже 1.
В контексте sql-запроса нет переменных. Если вам надо модифицировать значение поля таблицы, то придётся написать UPDATE, т.к. SELECT по определению не может менять данные таблиц, с которых запрашиваются данные. И в postgresql нет оператора инкремента, даже если бы он был, он бы работал только в контексте pl/pgsql.
Если внизу в само написано $$ LANGUAGE plpgsql - то это не значит, что мы используем plpgsql ? Т.е. внутри самой конструкции BEGIN тут тело END используется простой SQL и я не могу обрабатывать переменные?
вы документацию читать не пробовали? Присваивание значения переменной PL/pgSQL записывается в виде: переменная { := | = } выражение; Как описывалось ранее, выражение в таком операторе вычисляется с помощью SQL-команды SELECT, посылаемой в основную машину базы данных.
Вот так? i_district_code := 0;
Обсуждают сегодня