易截截图软件、单文件、免安装、纯绿色、仅160KB

ORACLE PL/SQL 集合学习笔记(三)

四、联合数组的使用方法
联合数组以前被称为PL/SQL表。在表中不能使用联合数组,只能将它们用作程序设计的结构体。只能在PL/SQL中访问联合数组。
注意到联合数组带来的一些关键问题是非常重要的。这些问题使我们介绍它们的用法时,需要采取一些特别的方法。这些问题包括:
联合数组不需要初始化,也没有构造函数语法。在对它们进行赋值以前,也不需要专门为其分配存储空间,也就不需要使用集合API的EXTEND方法。
在ORACLE 10G中,以及在ORACLE 10G以前的版本中,都可以使用数字索引联合数组。另外,在ORACLE 10G中,还可以使用具有唯一性的变长字符串作为联合数组的索引。
可以使用任意的整数作为联合数组的索引,这就说明联合数组的索引可以是任意正数、负数或0。
可以显式地将等价的%ROWTYPE、记录类型和对象类型的返回值,转换成联合数组的结构体。
联合数组是使用FORALL语句或BULK COLLECT子句的关键,而后者则允许数据库到程序设计单元的批转换。
在使用了全球化设置,例如NLS_COMP或NLS_SORT初始化参数的数据库中,将字符串用作联合数组索引的时候,需要我们进行特殊的处理。
 
1、定义联合数组和用作PL/SQL的程序结构体
在PL/SQL语言中定义联合数组的语法有两种,一种是:
 
CREATE OR REPLACE TYPE type_name
AS TABLE OF element_type [NOT NULL]
INDEX BY [PLS_INTEGER | BINARY_INTEGER | VARCHAR2(size) ];
 
可以将正数、负数或者0值用作联合数组的索引。ORACLE 10G中的PLS_INTEGER何BINARY_INTEGER类型都是不受限制的数据类型,这两个数据类型都映射到C/C++、C#和JAVA的调用规范中。
变长字符串的最大长度为4000个字符。
 
另一种定义联合数组的语法是:
 
CREATE OR REPLACE TYPE type_name
AS TABLE OF element_type [NOT NULL]
INDEX BY key_type;
 
其中的key_type允许我们使用VARCHAR2、STRING或LONG类型。使用VARCHAR2和STRING时,都需要定义大小。使用LONG类型时,则不需要定义大小,因为它是通过定义VARCHAR(32760)进行定义的。
 
联合数组不需要进行初始化,也没有构造函数语法。这是与其他两种集合类型(VARRAYS和嵌套表)有着本质区别的地方。
 
如果你像下面这样构造一个联合数组,那么会引发PLS-00222异常。
 
DECLARE
-- Define an associative array of strings.
TYPE card_table IS TABLE OF VARCHAR2(5 CHAR)
INDEX BY BI


相关文档:

oracle :存储过程和函数的几种写法

关于存储过程和函数的定义网上一搜一大把,这里就不特殊介绍了,这里就只对我自己写的几种格式的存储过程和函数做一些总结,希望对大家有点帮助。
 一:存储过程
  
1:最普通的一种。(传参,查询游标,执行,循环游标做插入动作)。
create or replace procedure zy2040_sirole(rolekey in varchar2) ......

Oracle数据库备份技巧

  oracle% sqlplus /nolog
  SQL> conn / as sysdba
  数据库的物理文件
  数据文件
  select file_name from dba_data_files;
  控制文件
  select name from v$controlfile;
  日志文件
  select member from v$logfile;
  ---------------------------------------------------------
......

SQL Update语句的执行顺序

执行顺序:从左到右,变量优先,逐行更新
 摘自CSDN的例子(http://topic.csdn.net/u/20091030/16/7fd75fa6-bdb9-4516-9b27-48aef69703ba.html
http://topic.csdn.net/u/20090904/16/e5dad9c7-fb59-41b9-b28d-e3b71c3e8420.html)
1.变量优先
create table #t (field1 varchar(10),field2 varchar(10))
insert #t sel ......

ORACLE PL/SQL 记录(Record)学习笔记(一)

在PL/SQL程序设计中,有三种定义记录类型的方法:一种是使用%ROWTYPE属性;另一种是在PL/SQL程序的声明部分显示定义记录类型;最后一种方法是将记录类型定义为数据库结构或对象类型。
我先简单的介绍一个下面要用到的表的结构(黑体标明的字段为主键):
INDIVIDUALS表
 
INDIVIDUAL ID
FIRST NAME
MIDDLE_INITI ......

ORACLE PL/SQL 集合学习笔记(二)

三、嵌套表的使用方法
 
1、将嵌套表定义为PL/SQL的程序构造块
 
TYPE type_name IS TABLE OF element_type[NOT NULL];
 
如下例所示:
DECLARE

-- Define a nested table of variable length strings.
TYPE card_table IS TABLE OF VARCHAR2(5 CHAR);

-- Declare and initialize a n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号