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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM