ITPub博客

首页 > 数据库 > Oracle > record & pl/sql表

record & pl/sql表

原创 Oracle 作者:dragonosoft 时间:2009-03-19 19:39:03 0 删除 编辑

练习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博客 ” ,链接:https://blog.itpub.net/21156810/viewspace-1019044/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 代码表更新
请登录后发表评论 登录
全部评论

注册时间:2009-03-19

  • 博文量
    6
  • 访问量
    10224