栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

处理集合

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

处理集合

至少在第二种情况下,您丢失了表定义。这个说法:

create or replace TYPE tbl_list2 IS OBJECT (l_owner  VARCHAr2(64),l_name  VARCHAr2(64));

仅声明对象(或记录)类型,而不声明表。

因此,您需要分两个步骤进行操作:

create or replace TYPE tbl_list_rec IS OBJECT (l_owner  VARCHAr2(64),l_name  VARCHAr2(64));/create or replace TYPE tbl_list2 as table of tbl_list_rec;/

之后,您需要在脚本中进行一些语法更正:

declare  l_object tbl_list2;  i        number;begin  -- for list initialization it must be filled with constructed objects  l_object := tbl_list2( tbl_list_rec('','') );  for i in 1..100000 loop    -- 1. select values to variable    -- 2. Fix constructor for list     select       l_object MULTISET UNIOn DISTINCT tbl_list2(tbl_list_rec('myOwner','MyTable'))    into       l_object     from       dual;    end loop;    for i in l_object.first ..  l_object.last loop      -- output separate fields, there are now default conversion from       -- user-defined objects to varchar2.      dbms_output.put_line(l_object(i).l_owner || ',' || l_object(i).l_name);    end loop;end;/

更新

由于上下文切换数量众多,上述解决方案相对较慢。但是,如果没有一些额外的工作,就不能直接在PL / SQL中完成复杂对象类型实例的比较。
为了使Oracle知道对象实例是相同还是不同,我们需要为对象类型定义映射或排序方法。两种方法都不允许,因此需要选择适当的一种。MAP方法的执行速度更快,在我们的案例中无需排序,因此请执行以下操作:

create or replace TYPE tbl_list_rec2 AS OBJECT (  l_owner  VARCHAr2(64),  l_name  VARCHAr2(64),  map member function get_key return varchar2);/

执行:

create or replace TYPE BODY tbl_list_rec2 AS  map member function get_key return varchar2  is  begin    return l_owner||chr(1)||l_name;  end;end;/

之后,可以像

varchar2
问题中第一个示例中一样简单地在PL / SQL代码中测试对象的相等性:

declare  l_object tbl_list2a;  i        number; begin  l_object := tbl_list2a( tbl_list_rec2('','') );  for i in 1..100000 loop   l_object := l_object MULTISET UNIOn DISTINCT tbl_list2a(tbl_list_rec2('myOwner','MyTable'));  end loop;  for i in l_object.first..  l_object.last loop    dbms_output.put_line(l_object(i).l_owner || ',' || l_object(i).l_name);  end loop;end;/


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/634598.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号