PostgreSQL獲取操作影響的行數
如何來獲取普通的操作所影響的行數,PostgreSQL里面有一個內置的變量DIAGNOSTICS與ROW_COUNT可以做到這一點。
一、環境:
DB:9.4beta3
二、準備:
postgres=# create table test(id int); CREATE TABLE postgres=# insert into test select generate_series(1,20); INSERT 0 20 postgres=# select * from test;id
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (20 rows)</pre>三、創建函數:
CREATE OR REPLACE FUNCTION fun_affect_rows() RETURNS text AS $BODY$declare v_count int;begin
insert into test values(99),(98); GET DIAGNOSTICS v_count = ROW_COUNT; raise notice '本次插入數據量 %', v_count;
delete from test where id < 15; GET DIAGNOSTICS v_count = ROW_COUNT; raise notice '本次刪除數據量 %', v_count;
update test set id = 100 where id >90; GET DIAGNOSTICS v_count = ROW_COUNT; raise notice '本次更新數據量 %', v_count;
return '測試完畢'; end; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION fun_affect_rows() OWNER TO postgres;</pre>四、運行情況:
postgres=# select * from fun_affect_rows(); NOTICE: 本次插入數據量 2 NOTICE: 本次刪除數據量 14 NOTICE: 本次更新數據量 2fun_affect_rows
測試完畢 (1 row)</pre>如果要返回DML的結果,那就用returning就可以了
五、參考
http://www.postgresql.org/docs/9.0/static/plpgsql-statements.html
來自:http://my.oschina.net/Kenyon/blog/343426