CQM*_*CQM 8 sql postgresql increment plpgsql postgresql-8.4
我不能立即从例子中找到这个.我想在一个函数中增加循环中的变量.
例如:
DECLARE
iterator float4;
BEGIN
iterator = 1;
while iterator < 999
.....
iterator ++;
END;
Run Code Online (Sandbox Code Playgroud)
怎么做?
我正在查看有关流量控制的文档:http:
//www.postgresql.org/docs/8.4/static/plpgsql-control-structures.html
并且它们似乎都不适合我,除非这些绝对是模拟递增变量的唯一方法.
Erw*_*ter 30
要在plpgsql中增加变量:
iterator := iterator + 1;
Run Code Online (Sandbox Code Playgroud)
没有++操作员.
关于plpgsql中的赋值运算符:
您的代码片段将如下所示:
DECLARE
iterator float4 := 1; -- we can init at declaration time
BEGIN
WHILE iterator < 999
LOOP
iterator := iterator + 1;
-- do stuff
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
使用FOR循环更简单,更快速的替代方案:
FOR i in 1 .. 999 -- i is integer automatically, not float4
LOOP
-- do stuff
END LOOP;
Run Code Online (Sandbox Code Playgroud)
变量
name自动定义为类型integer,仅存在于循环内(循环中忽略变量名的任何现有定义).
对于sscce
DO $$
DECLARE
counter INTEGER := 0 ;
BEGIN
WHILE counter <= 5 LOOP
counter := counter + 1 ;
RAISE NOTICE 'Counter: %', counter;
END LOOP ;
END; $$
Run Code Online (Sandbox Code Playgroud)
如果你想避免声明变量(更简洁)
DO $$
BEGIN
FOR counter IN 1..5 LOOP
RAISE NOTICE 'Counter: %', counter;
END LOOP;
END; $$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30141 次 |
| 最近记录: |