標籤:style http io color ar os sp strong 資料
如何來擷取普通的操作所影響的行數,PostgreSQL裡面有一個內建的變數DIAGNOSTICS與ROW_COUNT可以做到這一點。
一、環境:
DB:9.4beta3
二、準備:
postgres=# create table test(id int);CREATE TABLEpostgres=# insert into test select generate_series(1,20);INSERT 0 20postgres=# 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)
三、建立函數:
CREATE OR REPLACE FUNCTION fun_affect_rows() RETURNS text AS$BODY$declarev_count int;begininsert 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;
四、運行情況:
postgres=# select * from fun_affect_rows();NOTICE: 本次插入資料量 2NOTICE: 本次刪除資料量 14NOTICE: 本次更新資料量 2 fun_affect_rows ----------------- 測試完畢(1 row)
如果要返回DML的結果,那就用returning就可以了
五、參考
http://www.postgresql.org/docs/9.0/static/plpgsql-statements.html
PostgreSQL擷取操作影響的行數