您的位置:首页 > 数据库 > Oracle

Oracle数据库创建实体对象,在自命名包中定义函数以及返回实体对象数据

2017-05-23 17:23 671 查看
select fpdm,dsfjdm from tfp_fplx where dsfjdm='13701';

--创建测试实体
create or replace type testObject as object
(
fpdm varchar2(20),
dsfjdm varchar2(20)

)
//分布执行,先执行上面的,在执行下面的
--创建一个表,表中的每一条记录都是上面创建的实体。
create or replace type fpbjcs.testObject_tab as table of testObject

--Oracle数据库创建包,指定函数和存储过程

create or replace package fpbjcs.pkg_test is

-- Public function and procedure declarations,注意方法中必须有参数,否则创建失败
function getfpdmtest(fjdm in varchar2)--输入参数
return testObject_tab;

end pkg_test;

--函数的具体实现
create or replace package body fpbjcs.pkg_test is

function getfpdmtest(fjdm in varchar2)return testObject_tab is--指定返回的数据存在那个实体表中
fpslTab testObject_tab;
i number;
begin
null;
i := 1;

fpslTab := testObject_tab();--创建一个空对象
fpslTab.extend;
for testObjectRow in (--testObjectRow代表查询结果中的每一条数据。名称可以自己命名
--查询结果集

select fpdm,dsfjdm from tfp_fplx where dsfjdm=fjdm

)loop

--循环遍历结果集,往实体表存放数据
fpslTab(i) := testObject( testObjectRow.fpdm,testObjectRow.dsfjdm );--给testObject实体赋值。然后添加到实体对应的表集合中
i := i+1;
fpslTab.extend;

end loop;
return (fpslTab);
end getfpdmtest;

end pkg_test;
--调用执行
--testObject_tab是实体testObject对应的实体表集合
select * from table(cast(pkg_test.getfpdmtest('13701') as testObject_tab))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐