在plpgsql中循环增加一个数字

问题描述 投票:0回答:2

我无法立即从示例中找到这一点。我想在函数中的循环中递增变量。

例如:

DECLARE
   iterator float4;
BEGIN
   iterator = 1;

    while iterator < 999
       .....
      iterator ++;
END;

这将如何完成?

我正在看这个关于流量控制的文档:
http://www.postgresql.org/docs/8.4/static/plpgsql-control-structs.html

它们似乎都与我无关,除非这些绝对是模拟递增变量的唯一方法。

sql postgresql increment plpgsql postgresql-8.4
2个回答
46
投票

要在 PL/pgSQL 中递增变量:

iterator := iterator + 1;

没有

++
运算符。

关于PL/pgSQL中的赋值运算符:

手册中 PL/pgSQL 中循环的正确语法

您的代码片段将像这样工作:

DECLARE
   iterator float4 := 1;  -- init at declaration time
BEGIN
   WHILE iterator < 999
   LOOP
      iterator := iterator + 1;
      -- do stuff
   END LOOP;
END

使用

FOR
循环更简单、更快的替代方案:

BEGIN
   FOR i in 1 .. 999   -- i is integer automatically, not float4
   LOOP
      -- do stuff
   END LOOP;
END

说明书:

变量

name
自动定义为类型
integer
并且仅存在于循环内部(循环内忽略变量名称的任何现有定义)。


6
投票

为了sscce

DO $$
DECLARE
   counter INTEGER := 0 ; 
BEGIN
   WHILE counter <= 5 LOOP
      counter := counter + 1 ; 
      RAISE NOTICE 'Counter: %', counter;
   END LOOP ; 
END; $$

如果你想避免声明变量(更简洁)

DO $$
BEGIN
   FOR counter IN 1..5 LOOP
      RAISE NOTICE 'Counter: %', counter;
   END LOOP;
END; $$

学分

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.