PostgreSQL for in loop
阿新 • • 發佈:2020-10-08
模板是
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 IN1..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