- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
pl_sql集合
什么是集合集合是一种数据结构,可以在单个变量中保存若干行数据。举例来说,我需要将一个条形码的列表组装到一个集合中,并将集合从一个程序传递到另一个。集合不同于记录,记录中只能保存一行数据,其中可以包含不同类型的数据;而在集合中,所有行的数据都必须是同一类型的。有时候可以这样说,记录保存的是异构数据,而集合保存的是同构数据。如果你碰巧知道另一种程序设计语言,而最接近pl/sql集合的数据类型是数组。请耐心听,我还要介绍更多的术语。集合中单个的项被称为集合的元素。在使用集合时,引用一个特定元素的途径就是在括号中使用一个整数,称作索引。举例来说,bookcopies集合的第四个元素是:bookcopies(4),在这种情况下,索引“4”亦被称为该特定元素所对应的下标。在pl/sql中,有3大类集合: 1、索引表 2、嵌套表 3、可变数组(VARRAY)在我开始讨论各种集合类型的优缺点之前,会给出一些代码来阐明给特性。本例说明了例子:书籍的集合如何从服务器取出一个数据集合,并将集合作为参数传递。首先,我会自行定义一个数据类型,它是一个由varchar2组成的集合: CREATE TYPE book_barcodes_t AS TABLE OF VARCHAR2(100);该语句建立了一个新的book_barchodes_t数据类型,并将其定义存储在数据库内部。在创建数据类型之后,我可以在需要建立书籍条形码集合的时候,使用该数据类型。按照惯例,通常在程序员定义的数据类型之后附加_t。既然Oracle允许在各种地方使用新的数据类型,那么我们可以将它用作一个pl/sql函数的返回类型。该函数的目的在于返回一个VARCHAR2字符列表,每个字符串都包含所请求书籍的某个特定的副本的条形码ID:create or replace function available_copies(isbn_in in books.isbn%type)/*除了名字外,在这里将用户定义类型用作函数的返回类型,与使用内置类型是相同的*/ return book_barchodes_t is /*这是实际容纳集合的变量。该变量的名字是复数,以便提醒我自己,其中保存了多个项*/ copies book_barcodes_t; begin/*填充集合的一种方法就是通过使用Oracle的bulk collect特性将数据取道集合中。在这里,Oracle会自动地设置集合的大小,然后将所有的匹配行放置到其中。只要结果集合不太大,那么这种填充集合的方式是非常高效的。顺便说一下,只有对嵌入到pl/sql应用程序中的查询,才能使用这个特定的字句*/select barcode_id bulk collect into copiesfrom book_copieswhere isbn=isbn_in; end;这样,available_copies就创建并返回了一个集合,但代码是如何使用集合的呢?这里是一个非常简单的匿名块,它会调用上述函数,并对返回的集合中的元素进行迭代,打印出条形码: declare bar_ids book_barchdes_t begin bar_ids:=available_copies(11111); for i in bar_ids.first..bar_ids.last loopdbms_output.put_line(bar_ids(i)); end loop; end;集合提供了一些特别的内置函数,可以提供集合的有关信息,诸如第一个和最后一个索引以及元素数目等。第六行利用了这些内置函数,来设置循环索引的的起始和结束范围。有关集合的重要知识对于一个pl/sql开发者,关于集合要了解的重要知识包括: 1、3类集合之间的差别,即何时适于使用何种集合。 2、用于声明和填充集合的语法和规则。 3、如何使用被称作方法的内置函数对集合进行操作。不同类集合之间的差别特征索引表嵌套表可变数组(VARRY)可以在pl/sql中声明并使用是是是可以在数据库中声明并使用,还能用作数据库表中列的数据类型否是是在数据库中进行物理存储所用的方法不可用嵌套表的元素放置在物理上独立的“存储表”中VARRY元素作为不透明的数据结构存储在主表内部,或者存储为二进制大对象(BLOB)创建元素需要单独的步骤否在很多情况下是这样(必须分配空间)在很多情况下是这样(必须分配空间)索引值如何确定由程序员自行指定由oracle指定从1开始递增由oracle指定从1开始递增可用的索引值任何整数值或字符串在1和分配的元素数目之间的整数在1和分配的元素数目之间
您可能关注的文档
- DELETE,SELECT句法.docx
- DirectShow之接口实战篇.docx
- Dewesoft DS-NET产品介绍.pdf
- emd文件中的基本命令.doc
- ES3200-6-4-A说明书.pdf
- Esper学习之八:EPL语法(四).docx
- exchange 2007owa登录超时解决方案.docx
- Exchange+OWA+2007+登录注销界面.doc
- Exchange_2003_限制用户外发邮件.doc
- exchange2003 owa修改密码.doc
- 2024年沧州市公务员考试行测真题及答案详解(名师系列).docx
- 粮油食品检验人员复习提分资料带答案详解(精练).docx
- 粮油食品检验人员自我提分评估(考点精练)附答案详解.docx
- 粮油食品检验人员全真模拟模拟题附参考答案详解(精练).docx
- 2025年延安市公务员考试行测试卷历年真题附答案详解(突破训练).docx
- 2025年株洲市公务员考试行测试卷历年真题含答案详解.docx
- 2024年枣庄市公务员考试行测真题及完整答案详解1套.docx
- 2024年抚顺市公务员考试行测真题及答案详解(各地真题).docx
- 2025年常州市公务员考试行测真题及一套参考答案详解.docx
- 2023年德州市公务员考试行测试卷历年真题及1套完整答案详解.docx
最近下载
- 基于PLC的舞台灯光控制.doc VIP
- 山东省烟台市2022-2023学年高二下学期期末学业水平诊断化学试卷(含答案).pdf VIP
- 双通道脊柱内镜手术.pptx
- 2022-2023学年重庆市九龙坡区高二上学期期末物理试卷(含答案解析).docx VIP
- 劳动争议和解协议书模板.docx VIP
- 国家开放大学51679-工具书与文献检索-形成性考核3答案.docx VIP
- 全国光电设计大赛报告.pdf VIP
- 2024年广东省中考生物试卷.docx VIP
- 山东省烟台市2023-2024学年高二下学期期末学业水平诊断+化学试卷(含答案).pdf VIP
- 2025外研版英语三年级下册全册教学设计教案.pdf
文档评论(0)