例からすぐにこれを見つけることができませんでした。関数内のループ内で変数をインクリメントしたい。
例えば:
DECLARE
iterator float4;
BEGIN
iterator = 1;
while iterator < 999
.....
iterator ++;
END;
これはどのように行われますか?
私はフロー制御についてこのドキュメントを見ていました:
http://www.postgresql.org/docs/8.4/static/plpgsql-control-structures.html
そして、これらが変数の増分をシミュレートする唯一の方法でない限り、それらのどれも私には関係がないようです。
Plpgsqlで変数をインクリメントするには:
iterator := iterator + 1;
++
演算子はありません。
Plpgsqlの代入演算子について:
コードフラグメントは次のように機能します。
DECLARE
iterator float4 := 1; -- we can init at declaration time
BEGIN
WHILE iterator < 999
LOOP
iterator := iterator + 1;
-- do stuff
END LOOP;
END;
FOR
ループを使用した、よりシンプルで高速な代替手段:
FOR i in 1 .. 999 -- i is integer automatically, not float4
LOOP
-- do stuff
END LOOP;
変数
name
はタイプinteger
として自動的に定義され、ループ内にのみ存在します(変数名の既存の定義はループ内で無視されます)。