record & pl/sql表

练习record & pl/sql表的使用,所谓的数据抽取只是用来测试结果的正确与否。

create or replace procedure sp_test_hzy is
-- 使用record和pl/sql表实现数据抽取

-- record_type用于获取每一行记录
type record_type is record(
r_SJLYSS t_dmzh_dygx.SJLYSS%type,
r_LYB_COL_NAME t_dmzh_dygx.LYB_COL_NAME%type,
r_LYB_COL_VALUE t_dmzh_dygx.LYB_COL_VALUE%type,
r_LYB_COL_VALUE_CN t_dmzh_dygx.LYB_COL_VALUE_CN%type,
r_BZB t_dmzh_dygx.BZB%type,
r_BZB_COL_VALUE t_dmzh_dygx.BZB_COL_VALUE%type,
r_BZB_COL_VALUE_CN t_dmzh_dygx.BZB_COL_VALUE_CN%type);
-- plsql_type以rowid为索引列,存储各行数据
type plsql_type is table of record_type index by varchar2(50);

r_test record_type;
p_test plsql_type;
-- ls用来实现索引列的遍历
ls varchar2(50);

begin

-- 用record逐行获取数据,存入plsql表
for cur in (select rowidtochar(rowid) rid from t_dmzh_dygx) loop
select SJLYSS,
LYB_COL_NAME,
LYB_COL_VALUE,
LYB_COL_VALUE_CN,
BZB,
BZB_COL_VALUE,
BZB_COL_VALUE_CN
into r_test
from t_dmzh_dygx
where rowidtochar(rowid) = cur.rid;
p_test(cur.rid) := r_test;
end loop;

-- 使用ls遍历plsql表,实现数据抽取
ls := p_test.first;
for i IN 1 .. p_test.count loop
insert into t_dmzh_dygx_test values p_test (ls);
ls := p_test.next(ls);
end loop;
commit;

end;

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21156810/viewspace-1019044/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21156810/viewspace-1019044/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值