您的位置:首页 > 数据库

postgresql对于各种游标的使用示例

2015-03-13 13:33 676 查看
CREATE OR REPLACE FUNCTION cursor_demo()
RETURNS refcursor AS
$BODY$
declare
unbound_refcursor refcursor;
v_id int;
v_step_desc varchar(1000);
begin
open unbound_refcursor for execute 'select id,step_desc from t_runtime_step_log';
loop
fetch unbound_refcursor into v_id,v_step_desc;

if found then
raise notice '%-%',v_id,v_step_desc;
else
exit;
end if;
end loop;
close unbound_refcursor;
raise notice 'the end of msg...';
return unbound_refcursor;
exception when others then
raise exception 'error--(%)',sqlerrm;
end;
$BODY$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION cursor_demo1(refcursor)
RETURNS refcursor AS
$$
begin
open $1 for select * from t_runtime_step_log;
return $1;
exception when others then
raise exception 'sql exception--%',sqlerrm;
end;
$$
LANGUAGE plpgsql;

begin;
select cursor_demo1('a');
fetch all in a;
--commit;

CREATE OR REPLACE FUNCTION cursor_demo2()
RETURNS refcursor AS
$$
declare
bound_cursor cursor for select * from t_runtime_step_log;
begin
open bound_cursor;
return bound_cursor;
end;
$$
LANGUAGE plpgsql;

begin;
select cursor_demo2();
fetch all in bound_cursor;
--commit;

CREATE OR REPLACE FUNCTION cursor_demo3(p_condition integer)
RETURNS refcursor AS
$BODY$
declare
bound_param_cursor cursor(id_condition integer) for select * from t_runtime_step_log where id > id_condition;
begin
open bound_param_cursor(p_condition);
return bound_param_cursor;
end;
$BODY$
LANGUAGE plpgsql;

begin;
select cursor_demo3(5);
fetch all in bound_param_cursor;
--commit;

CREATE OR REPLACE FUNCTION cursor_demo4(p_condition integer)
RETURNS refcursor AS
$$
declare
bound_param_cursor cursor for select * from t_runtime_step_log where id > p_condition;
begin
open bound_param_cursor;
return bound_param_cursor;
end;
$$
LANGUAGE plpgsql;

begin;
select cursor_demo4(5);
fetch all in bound_param_cursor;
--commit;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  postgresql sql cursor