1. 程式人生 > 實用技巧 >PostgreSQL for in loop

PostgreSQL for in loop

模板是

FOR var IN REVERSE 1..10 LOOP
    statement_list
END LOOP;

REVERSE 不知道什麼意思……

一般用的是

FOR var IN 1..10 LOOP statement_list END LOOP;

如果是navicate for+tab出來的模板,需要自己手動定義值,不然是不生效的。

var是一個變數,它剛開始的時候是等於1..10中的1,可以對var進行數學計算,但是不管var在中途改變為什麼值,這個迴圈還是從1開始迴圈到10執行10次的。statement_list中是自己的邏輯操作,每一個sql用一個;隔開。

中途可以列印var的值,用

raise notice 'var的值:%', var;

完整的一個示例:

-- 如果存在該儲存過程就刪除
drop function if exists function_test3();
-- replace之前先呼叫了drop是因為如果返回值不同是不能直接替換的
create or replace function function_test3() returns void as
-- 標記開始和起始位置,用$$和$$也可以,主要是查詢儲存過程的結果是用的$BODY$
$BODY$
--     這裡可以先定義一些變數
    BEGIN
        FOR var_a IN
1..10 LOOP raise notice '變數var_a的值是:%', var_a; END LOOP; END $BODY$ LANGUAGE plpgsql; -- 呼叫儲存過程 select function_test3();
select function_test3()
> 注意:  變數var_a的值是:1
> 注意:  變數var_a的值是:2
> 注意:  變數var_a的值是:3
> 注意:  變數var_a的值是:4
> 注意:  變數var_a的值是:5
> 注意:  變數var_a的值是:6
>
注意: 變數var_a的值是:7 > 注意: 變數var_a的值是:8 > 注意: 變數var_a的值是:9 > 注意: 變數var_a的值是:10 > OK > 時間: 0.001s