postgresql 循環函數的簡單實現操作
我就廢話不多說瞭,大傢還是直接看代碼吧~
create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$ declare ii integer; declare num integer; begin II:=1; num = 1; FOR ii IN 1..a2 LOOP UPDATE student SET id=a1[num] WHERE cd_id = ii; num = num +1; if (num>6) then num = 1; end if; end loop; end; $$ LANGUAGE plpgsql; select aa1(array[1,4,5,6,7,8],6742)
補充:數據庫之postgreSql庫的存儲過程和循環總結
postgreSql庫中存儲過程模板
CREATE OR REPLACE FUNCTION p_fx_*** ( OUT v_row INTEGER, OUT v_rote varchar(50), OUT v_log varchar(50)) AS $$ DECLARE BEGIN select count(*) into v_row from *插入表的名字*; v_rote := 'SUCCESS'; v_log := 'SUCCESS'; END $$ LANGUAGE plpgsql VOLATILE
postgreSql庫中循環書寫的模板,以實際開發中的sql為例
單層循環
do $$ declare ***:=***; begin while *** loop end loop; end $$;
declare –聲明變量,如果聲明瞭變量別忘瞭加分號;
雙層循環
do $$ declare ***:=***; begin while *循環條件* loop for i in 1..12 loop raise notice '%',*變量名*; end loop; end loop; end $$;
raise notice ‘%’,變量名;這是輸出語句類似於Java中的print。
將循環放到存儲過程中
CREATE OR REPLACE FUNCTION p_fx_*** ( OUT v_row INTEGER, OUT v_rote varchar(50), OUT v_log varchar(50)) AS $$ DECLARE BEGIN while *循環條件* loop for i in 1..12 loop raise notice '%',*變量名*; end loop; end loop; select count(*) into v_row from *插入表的名字*; v_rote := 'SUCCESS'; v_log := 'SUCCESS'; END $$ LANGUAGE plpgsql VOLATILE
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- Postgresql 存儲過程(plpgsql)兩層for循環的操作
- PostgreSQL function返回多行的操作
- PostgreSQL數據庫中匿名塊的寫法實例
- PostgreSQL存儲過程循環調用方式
- PostgreSQL 定義返回表函數的操作