一个是显式游标,一个是隐式游标。
分别执行。
点击(此处)折叠或打开
- 
				CREATE OR REPLACE FUNCTION test()
 
- 
				  RETURNS numeric AS
 
- 
				$BODY$
 
- 
				--
 
- 
				--测试显式游标和隐式游标的效率
 
- 
				--
 
- 
				declare
 
- 
				  vamt numeric(14,4);
 
- 
				  cur cursor is select * from wk_piece3; 
 
- 
				  rec record;
 
- 
				begin
 
- 
				--1)显示游标
 
- 
				/*
 
- 
				  vamt := 0;
 
- 
				  open cur;
 
- 
				  loop
 
- 
				        fetch cur into rec; 
 
- 
				        exit when not found;
 
- 
				        vamt := vamt + rec.amount; 
 
- 
				  end loop;
 
- 
				  close cur;
 
- 
				*/
 
- 
				
 
- 
				--2)隐式游标
 
- 
				  vamt :=0;
 
- 
				  for rec in select * from wk_piece3 loop
 
- 
				        vamt := vamt + rec.amount;
 
- 
				  end loop;
 
- 
				
 
- 
				  return vamt;
 
- 
				
 
- 
				end;$BODY$
 
- 
				  LANGUAGE plpgsql VOLATILE
 
多次执行结果是:
1)显式游标时间:3秒左右
2)隐式游标时间:1.6秒左右
在效率上,隐式游标比显式游标大概快1倍。
