首页 >

Oracle 11g Release 1 (11.1) PL/SQL_理解 Collection 类型

数据库|mysql教程Oracle 11g Release 1 (11.1) PL/SQL_理解 Collection 类型
Oracle存储过程,Oracle 11g Release
数据库-mysql教程
评测网 源码,Ubuntu终端命令执行,爬虫直接执行js,php变量传给php,湛江seo转化lzw
了解 Oracle 集合意义在于:当我们采用编程语言开发应用程序时,对其内置的集合类型,如数组、链表等,使用得很多,也很方便,但
b2b源码授权费用,vscode提示怎么开启,ubuntu语言栏,关闭多个tomcat脚本,易语言sqlite怎么加字段,分布式爬虫怎么判断是否结束,php网页测试,seo实验结论写什么,装饰工程网站模板,好看的免费网站模板下载地址lzw
egret游戏源码,mac上有vscode吗,ubuntu使用SSL,项目启动外置tomcat,后端爬虫技术,php 类常量 访问,扬州seo推广外包公司,网站升级中 模板,dede 多个文章模板lzw
本文内容

定义 Collection 类型
声明 Collection 变量
初始化和引用 Collection
引用 Collection 元素
给 Collection 赋值
多维 Collection
比较 Collection
Collection 方法
Collection 异常

了解 Oracle 集合意义在于:当我们采用编程语言开发应用程序时,对其内置的集合类型,如数组、链表等,使用得很多,也很方便,但是当业务逻辑变得复杂时,如需要同时向多个表插入数据,和一个表插入多条数据,也许还需要事物控制,此时使用匿名子程序似乎很合适。那么,在匿名子程序中使用集合类型就不可避免。

另外,若有一个用编程语言写的函数,其涉及集合操作,出于某种必要的原因,想改写成 Oracle 函数,那么,对了解 Oracle 集合操作很有必要。

定义 Collection 类型

先定义 collection 类型,之后再声明该类型的变量。

你可以在模式级别、包或 PL/SQL 块内定义一个 collection 类型。

在模式级别创建的 collection 类型是 standalone stored type。用 CREATE TYPE 语句创建。它存储在数据库,直到用 DROP TYPE 语句删除该类型。

在包内创建的 collection 类型是 packaged type。它存储在数据库,直到用 DROP PACKAGE 语句删除包。

在 PL/SQL 块创建的 collection 类型只在块内可用,只有块嵌入在 standalone 或 packaged subprogram 中它才存储在数据库。

collection 类型遵循与其他类型、变量一样的作用域和实例化规则。当你输入一个块或子程序时,collection 被实例化,当退出时,销毁。在一个包中,当初从引用包时,collection 被实例化,并在结束数据库会话时,销毁。

你可以在任何 PL/SQL 块、子程序,或包的声明部分,使用 TYPE 来定义 TABLE 和 VARRAY 类型。

对于在 PL/SQL 内声明的 nested table 和 varray,table 或 varray 的元素类型可以是,除了 REF CURSOR 以外的任意 PL/SQL 数据类型。

当定义一个 VARRAY 类型时,必须用一个正整数指定最大大小。如下所示,定义一个能最多存储 366 个日期的 VARRAY:

DECLARE
TYPE Calendar IS VARRAY(366) OF DATE;

associative arrays 可以用任意键值插入元素。键不需要是连续的。键的数据类型可以是 PLS_INTEGER、VARCHAR2,或 VARCHAR2 子类型的一个:VARCHAR、STRING、或 LONG.

必须指定基于 VARCHAR2 键的长度,除了 LONG,因为,,它等价于声明一个 VARCHAR2(32760) 类型的键。类型 RAW、LONG RAW、ROWID、CHAR 和 CHARACTER 不允许做为一个 associative array 的键。LONG 和 LONG RAW 仅仅是为了向后兼容。

不允许初始化子句。associative arrays 没有构造标记。当使用基于 VARCHAR2 键来引用 associative arrays 中的一个元素时,你可以使用如 DATE 或 TIMESTAMP 等类型,只要该类型可以用 TO_CHAR 函数转换成 VARCHAR2。

声明 Collection 变量

定义一个 collection 类型后,用该类型声明变量。在声明中使用新类型名,同预定义类型一样,如 NUMBER。

示例 1:演示声明 nested table、varray 和 associative array

VARCHAR2(30); TYPE varray_type NUMBER VARCHAR2(32) VARCHAR2(32) INDEX BY VARCHAR2(64); v1 nested_type; v2 varray_type; v3 assoc_array_num_type; v4 assoc_array_str_type; v5 assoc_array_str_type2; BEGIN — an arbitrary number of strings can be inserted v1 v1 := nested_type(‘Shipping’, ‘Sales’, ‘Finance’, ‘Payroll’); v2 := varray_type(1, 2, 3, 4, 5); — Up to 5 integers v3(99) := 10; — Just start assigning to elements v3(7) := 100; — Subscripts can be any integer values v4(42) := ‘Smith’; — Just start assigning to elements v4(54) := ‘Jones’; — Subscripts can be any integer values v5(‘Canada’) := ‘North America’; — Just start assigning to elements v5(‘Greece’) := ‘Europe’; — Subscripts can be string valuesEND;/


Oracle 11g Release 1 (11.1) PL/SQL_理解 Collection 类型
  • Oracle中merge用法
  • Oracle中merge用法 | Oracle中merge用法 ...

    Oracle 11g Release 1 (11.1) PL/SQL_理解 Collection 类型
  • Oracle恢复被误编译覆盖的存储过程
  • Oracle恢复被误编译覆盖的存储过程 | Oracle恢复被误编译覆盖的存储过程 ...

    Oracle 11g Release 1 (11.1) PL/SQL_理解 Collection 类型
  • Oracle存储过程中临时表的使用技巧
  • Oracle存储过程中临时表的使用技巧 | Oracle存储过程中临时表的使用技巧 ...