您好,欢迎访问三七文档
Version3.0集合和成员函数第十章2回顾在上一章中,我们讨论了•数据库触发器•内置程序包3目标本章讨论•PL/SQL表和记录•嵌套表和可变数组•成员函数和过程4PL/SQL表和记录9-1•PL/SQL表–在PL/SQL块中临时使用、像数组一样的对象–包含一列和一个主键–不能对列和主键进行命名–列可以是任何标量数据类型–主键必须是binary_integer类型–大小没有限制5PL/SQL表和记录9-2•声明PL/SQL表–在块、子程序或程序包的声明部分进行声明•所包含的步骤–定义表的类型TYPEtypenameISTABLEOFcol_defINDEXBYBINARY_INTEGER;–声明该类型的一个PL/SQL表Tablenametypename;其中typename是类型名。6PL/SQL表和记录9-3•引用PL/SQL表–使用主键值引用PL/SQL表中的行–tablename(key_value)其中,tablename是表名,key_value是键值。•赋值–要给某行赋值,请使用tablename(key_value):=expression;其中tablename是表名,key_value是键值,expression是表达式。7PL/SQL表和记录9-4•管理PL/SQL表–使用Insert语句从表中向数据库中添加数据–使用Delete语句从表中删除数据8PL/SQL表和记录9-5•记录–存储在字段中的一组相关数据项–字段有自己的名称和数据类型–可以使用%ROWTYPE来声明记录,它表示表的行•优点–用户定义的记录可以有任意数目的不同数据类型的列9PL/SQL表和记录9-6•声明记录–首先,定义记录类型TYPEtypenameISRECORD(列定义.…);其中,typename是类型名。–声明一个该类型的记录作为标识符recordtypetypename;其中recordtype是记录类型,而typename是类型名。–%type和%rowtype可以用来指定列的数据类型。–NOTNULL列必须在声明部分进行初始化。10PL/SQL表和记录9-7•引用记录–引用字段的语法是recordname.columnname–用于给列赋值的语法是recordname.columnname:=expression;其中,recordname是记录名,而columnname是列名,expression是表达式。11PL/SQL表和记录9-8•批量绑定–绑定-对PL/SQL变量的赋值–批量绑定-一次绑定一整个集合–提高DML语句的性能–FORALL关键字用于要在发送到SQL引擎之前对输入集合进行批量绑定12PL/SQL表和记录9-9•BULKCOLLECT子句–通知SQL引擎在将输出集合返回到PL/SQL引擎之前对它们进行批量绑定•用于下列子句–SELECTINTO–FETCHINTO–RETURNINGINTO13嵌套表和可变数组11-1•嵌套表–嵌套在另一个表中的表–可以直接使用SQL进行操纵–通过添加额外的集合方法来扩展索引检索表的功能•声明嵌套表–用来声明的语法是TYPEtablenameISTABLEOFtabletype;其中,tablename是表名,而tabletype是表类型。14嵌套表和可变数组11-2•嵌套表–声明时初始化为NULL–使用构造函数来完成初始化–构造函数跟表类型同名15嵌套表和可变数组11-3•创建嵌套表所包含的步骤–使用CREATETYPE语句来创建类型–使用ASTABLEOF子句基于此类型创建另一个类型–使用CREATETABLE语句来创建表,关键字为NESTEDTABLE…STOREAS16嵌套表和可变数组11-4•嵌套表与索引检索表–相似之处数据类型有相同的结构用下标来访问单个元素为索引检索表编写的代码同样适用于嵌套表17嵌套表和可变数组11-5•嵌套表与索引表–差异嵌套表索引表使用SQL来操纵并存储在数据库中不可能下标范围:1到2147483647下标范围:-2147483647到2147483647可用ISNULL操作符来验证不可验证可用EXTEND和TRIM方法不可用18嵌套表和可变数组11-6•可变数组–类似于C或者Pascal中的数组的数据类型–类似于嵌套表或者索引检索表–可以对其元素数目设置限制19嵌套表和可变数组11-7•声明可变数组–用于声明可变数组的语法是TYPEtypenameISVARRAY(maximum_size)OFelement_type(notnull);–typename是可变数组名–Maximum_size设置了元素的数目–Element_type不能为boolean、ref游标、表或者另一种可变数组类型20嵌套表和可变数组11-8•可变数组–可变数组可以存储在数据库的列中–只可以整个地对可变数组进行操纵–要修改一个可变数组,首先要把其值选到一个变量中,进行修改,然后插入到表中21嵌套表和可变数组11-9集合方法方法描述Exists(n)如果第n个元素存在的话,返回TRUECount返回元素的总数Limit返回元素的最大数目First返回该集合的第一个元素Last返回该集合的最后一个元素22嵌套表和可变数组11-10集合方法方法描述Prior(x)返回第x个元素之前的元素Next(x)返回第x个元素之后的元素Extend(x,y)追加x个第y个元素的副本Trim(x)从集合的末尾处截断x个元素Delete删除部分或者全部元素23嵌套表和可变数组11-11•可变数组与嵌套表–相似之处允许使用下标来访问单个元素可以存储到数据库的表中–差异可变数组有最大容量,而嵌套表没有可变数组-跟包含它的表存储在一起,嵌套表-存储在单个表中24成员函数和过程2-1•构造函数方法–Oracle的每个对象均有一个内置的构造函数方法–用于创建对象的一个实例–无需显式地定义–与对象类型同名25成员函数和过程2-2•对象类型–包含类型规格和类型主体•类型规格–应用程序的接口–声明数据结构和操作来操纵数据•类型主体–定义方法–实现规格26总结2-1•PL/SQL表有一列和一个主键•记录是存储在字段中的一组相关数据•批量绑定一次绑定整个集合并提高性能•嵌套表类似于PL/SQL表并且大小不受限制27总结2-2•嵌套表自动地初始化为空•可变数组的长度可变•可变数组的最大容量需要在声明数组时指定•可变数组跟包含它的表是存放在一起的
本文标题:Oracle
链接地址:https://www.777doc.com/doc-9242 .html