最近参与的一个项目,后期无聊,别人做测试的时候想让我写一个存储过程,我以前也没有接触过plsql的存储过程,通过查询资料,自己写了一个供大家参考,有什么意见和改进希望大家多多指正。
需求:从A表中检索出数据,以A表中的数据为条件,更新B表中的数据。
-- Function: testupdate(bigint)
-- DROP FUNCTION testupdate(bigint);
CREATE OR REPLACE FUNCTION testupdate(loopcount bigint) RETURNS boolean AS
$BODY$ DECLARE
cu refcursor;
rec record;
BEGIN
open cu for select * from A where A.a IS NOT NULL;
loop
fetch cu into rec;
if not found then
exit;
end if;
update Bset B.b = '20120201'where B.b1 = rec.a1and B.b2 = rec.a2;
end loop;
close cu;
return true;
END;
$BODY$ LANGUAGE 'plpgsql' VOLATILE COST 100;
ALTER FUNCTION testupdate(bigint) OWNER TO mmbi_pos;
调用的时候
select * from testupdate(2);