📄 第五章 pl-sql集合与记录(1) - pl-sql用户指南与参考 - whatiswhat.htm
字号:
PL/SQL用户指南与参考<!-- a82530 --></A><!-- 82530 --> </LI></UL>
<LI><A href="http://blog.chinaunix.net/u1/44734/article_62688.html">·
FreeBSD<!-- a62688 --></A><!-- 62688 -->
<LI><A href="http://blog.chinaunix.net/u1/44734/article_62693.html">·
文摘<!-- a62693 --></A><!-- 62693 -->
<LI><A href="http://blog.chinaunix.net/u1/44734/article_82547.html">·
JavaScript<!-- a82547 --></A><!-- 82547 -->
<LI><A href="http://blog.chinaunix.net/u1/44734/article_83441.html">·
Linux <FONT face="Wingdings 3">}</FONT></A>
<UL class=ul2>
<LI><A
href="http://blog.chinaunix.net/u1/44734/article_83906.html">· VIM<!-- a83906 --></A><!-- 83906 --> </LI></UL>
<LI><A href="http://blog.chinaunix.net/u1/44734/article_62689.html">·
杂谈<!-- a62689 --></A><!-- 62689 -->
<LI><A href="http://blog.chinaunix.net/u1/44734/article_89165.html">·
Windows<!-- a89165 --></A><!-- 89165 --> </LI></UL></LI>
<LI class=ul0><A class=list1
href="http://blog.chinaunix.net/u1/44734/index.html">首页</A> </LI></UL></TD>
<TD width=10></TD></TR>
<TR>
<TD colSpan=4>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width=980 border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<SCRIPT language=javascript>function $(s){return document.getElementById(s);}function ShowHideDiv(divid,iImg){if($(divid).style.display == "none"){iImg.src="../../templates/newgreen/images/dot2.gif";$(divid).style.display = "block";iImg.title="收起";}else{iImg.src="../../templates/newgreen/images/dot4.gif";$(divid).style.display = "none";iImg.title="展开";}}navHover();</SCRIPT>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=3></TD></TR></TBODY></TABLE><BR>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TD width=18 height=28><IMG alt=""
src="第五章 PL-SQL集合与记录(1) - PL-SQL用户指南与参考 - whatiswhat.files/bg_art_left_top.gif"
border=0></TD>
<TD
background="第五章 PL-SQL集合与记录(1) - PL-SQL用户指南与参考 - whatiswhat.files/bg_art_top.gif">
<P style="MARGIN: 5px; LINE-HEIGHT: 150%"></P></TD>
<TD width=18 height=28><IMG alt=""
src="第五章 PL-SQL集合与记录(1) - PL-SQL用户指南与参考 - whatiswhat.files/bg_art_right_top.gif"
border=0></TD></TR>
<TR>
<TD width=18
background="第五章 PL-SQL集合与记录(1) - PL-SQL用户指南与参考 - whatiswhat.files/bg_art_left.gif"></TD>
<TD align=middle bgColor=#f5fdee><BR><FONT style="FONT-SIZE: 14pt"
color=#295200><B>第五章 PL/SQL集合与记录(1)</B></FONT>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1
cellPadding=0 width="100%" border=1>
<TBODY>
<TR>
<TD align=middle>
<TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=middle>
<TABLE
style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<DIV id=art style="MARGIN: 15px">
<CENTER><IMG alt=""
src="第五章 PL-SQL集合与记录(1) - PL-SQL用户指南与参考 - whatiswhat.files/o_cover.jpg"><BR><IMG
alt=""
src="第五章 PL-SQL集合与记录(1) - PL-SQL用户指南与参考 - whatiswhat.files/o_banner.gif">
</CENTER>
<DIV id=chapter>第五章 PL/SQL集合与记录</DIV><!-- InstanceEndEditable --><!-- InstanceBeginEditable name="EditRegion2" -->
<P class=title1>一、什么是集合</P>
<P>集合就是相同类型的元素的有序合集。它一个通用的概念,其中包含了列表、数组和其他相似的数据类型。每一个元素都有唯一的下标来标识当前元素在集合中的位置。PL/SQL提供了以下几种集合类型:</P>
<OL>
<LI>索引表,也称为关联数组,可以让我们使用数字或字符串作下标来查找元素。(这有点和其他语言中的哈希表相类似。)
<LI>嵌套表可以容纳任意个数的元素,使用有序数字作下标。我们可以定义等价的SQL类型,把嵌套表存到数据库中去,并通过SQL语句进行操作。
<LI>变长数组能保存固定数量的元素(但可以在运行时改变它的大小),使用有序数字作为下标。同嵌套表一样,也可以保存到数据库中去,但灵活性不如嵌套表好。
</LI></OL>
<P>虽热集合是一维的,但我们可以把一个集合作为另外一个集合的元素来建立多维集合。</P>
<P>要在应用程序中使用集合,我们要先定义一个或多个PL/SQL类型,然后声明这些类型的变量。我们可以在过程、函数或包中定义集合类型。还可以把集合作为参数在客户端和存储子程序之间传递数据。
</P>
<P>要查找复杂类型的数据,我们可以在集合中存放PL/SQL记录或SQL对象类型。嵌套表和变长数组也可以作为对象类型的属性。</P>
<P class=title2>1、理解嵌套表</P>
<P>在数据库中,嵌套表可以被当作单列的数据表来使用。Oracle在往嵌套表中存放数据时是没有特定顺序的。但是,当我们把检索出来的数据存放在PL/SQL变量时,所有行的下标就会从1开始顺序编号。这样,就能像访问数组那样访问每一行数据。
</P>
<P>嵌套表有两个重要的地方不同于数组: </P>
<OL>
<LI>数组有固定的上限,而嵌套表是没有上界的。所以,嵌套表的大小是可以动态增长的。如下图: <IMG
alt=""
src="第五章 PL-SQL集合与记录(1) - PL-SQL用户指南与参考 - whatiswhat.files/o_5-1.gif">
<LI>数组必须是密集的(dense),有着连续的下标索引。所以我们不能从数组中删除元素。而对于嵌套表来说,初始化时,它是密集的,但它是允许有间隙的
(sparse),也就是说它的下标索引可以是不连续的。所以我们可以使用内置过程DELETE从嵌套表中删除元素。这样做会在下标索引上留下空白,但内置函数NEXT仍能让我们遍历连续地访问所有下标。
</LI></OL>
<P class=title2>2、理解变长数组</P>
<P>VARRAY被称为变长数组。它允许我们使用一个独立的标识来确定整个集合。这种关联能让我们把集合作为一个整体来操作,并很容易地引用其中每一个元素。下面是一个变长数组的例子,如果我们要引用第三个元素的话,就可以使用Grade(3)。</P><IMG
alt=""
src="第五章 PL-SQL集合与记录(1) - PL-SQL用户指南与参考 - whatiswhat.files/o_5-2.gif">
<P>变长数组有一个长度最大值,是在我们定义时指定的。它的索引有一个固定的下界1和一个可扩展的上界。例如变长数组Grades当前上界是7,但我们可以把它扩展到8、9、10等等。因此,一个变长数组能容纳不定个数的元素,从零(空的时候)到类型定义时所指定的最大长度。
</P>
<P class=title2>3、理解关联数组(索引表)</P>
<P>关联数组就是键值对的集合,其中键是唯一的,用于确定数组中对应的值。键可以是整数或字符串。第一次使用键来指派一个对应的值就是添加元素,而后续这样的操作就是更新元素。下面的例子演示了如何使用关联数组:
</P>
<BLOCKQUOTE>
<TABLE>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -