oracle 游标用法实例!
2个回答
展开全部
CREATE TABLE test_main (
id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
INSERT INTO test_main(id, value) VALUES (1, 'ONE');
INSERT INTO test_main(id, value) VALUES (2, 'TWO');
INSERT INTO test_main(id, value) VALUES (3, 'THREE');
DECLARE
-- 定义游标.
CURSOR c_test_main IS
SELECT id, value FROM test_main;
-- 保存游标数据的变量
v_main_data c_test_main%ROWTYPE;
BEGIN
-- 打开游标.
OPEN c_test_main;
LOOP
-- 填充数据(主表).
FETCH c_test_main INTO v_main_data;
-- 假如没有检索到(主表)数据,结束循环处理
Exit when c_test_main%NOTFOUND;
dbms_output.put_line(TO_CHAR(v_main_data.id)
|| ':' || v_main_data.value );
END LOOP;
-- 关闭游标
CLOSE c_test_main;
END;
/
id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
INSERT INTO test_main(id, value) VALUES (1, 'ONE');
INSERT INTO test_main(id, value) VALUES (2, 'TWO');
INSERT INTO test_main(id, value) VALUES (3, 'THREE');
DECLARE
-- 定义游标.
CURSOR c_test_main IS
SELECT id, value FROM test_main;
-- 保存游标数据的变量
v_main_data c_test_main%ROWTYPE;
BEGIN
-- 打开游标.
OPEN c_test_main;
LOOP
-- 填充数据(主表).
FETCH c_test_main INTO v_main_data;
-- 假如没有检索到(主表)数据,结束循环处理
Exit when c_test_main%NOTFOUND;
dbms_output.put_line(TO_CHAR(v_main_data.id)
|| ':' || v_main_data.value );
END LOOP;
-- 关闭游标
CLOSE c_test_main;
END;
/
参考资料: http://hi.baidu.com/wangzhiqing999/blog/item/db33b52993b8e23a359bf774.html
展开全部
使用scott用户
游标变量(动态游标)
declare
type t_cur is ref cursor;
many_data t_cur;
v_row_data emp%rowtype;
begin
open many_data for select * from emp;
fetch many_data into v_row_data;
dbms_output.put_line(v_row_data.ename);
close many_data;
end;
//创建程序包,在包中定义游标类型
create package cur_type_pack
is
type t_cur is ref cursor;
end;
//创建存储过程,带有游标类型的输出参数
create procedure emp_data_pro(v_emp_data out cur_type_pack.t_cur)
is
begin
open v_emp_data for select * from emp;
end;
//使用语句块调用带有游标类型输出参数的存储过程
declare
v_rec cur_type_pack.t_cur;
v_row_data emp%rowtype;
begin
emp_data_pro(v_rec);
fetch v_rec into v_row_data;
dbms_output.put_line(v_row_data.ename);
close v_rec;
end;
游标变量(动态游标)
declare
type t_cur is ref cursor;
many_data t_cur;
v_row_data emp%rowtype;
begin
open many_data for select * from emp;
fetch many_data into v_row_data;
dbms_output.put_line(v_row_data.ename);
close many_data;
end;
//创建程序包,在包中定义游标类型
create package cur_type_pack
is
type t_cur is ref cursor;
end;
//创建存储过程,带有游标类型的输出参数
create procedure emp_data_pro(v_emp_data out cur_type_pack.t_cur)
is
begin
open v_emp_data for select * from emp;
end;
//使用语句块调用带有游标类型输出参数的存储过程
declare
v_rec cur_type_pack.t_cur;
v_row_data emp%rowtype;
begin
emp_data_pro(v_rec);
fetch v_rec into v_row_data;
dbms_output.put_line(v_row_data.ename);
close v_rec;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询