易截截图软件、单文件、免安装、纯绿色、仅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存储过程的执行

declare
msg varchar(1000);    --定义一个变量用于显示传出的信息
begin
PRO_TACCOUNT_RECOUNT ('B9D2B59A955541298D59EA8C35668CFD',msg);   --执行存储过程
dbms_output.put_line(msg);   --输出变量
end; ......

完全卸载Oracle方法

 
完全卸载Oracle方法:
软件环境:
1、Windows XP + Oracle 10g
2、Oracle安装路径为:d:\Oracle
1、如果数据库配置了自动存储管理(ASM),应该先删除聚集同步服务CSS(cluster Synchronization Services).删除CSS服务的方法是在DOS命令行中执行如下命令: localconfig delete
2、在“服务”窗口中停 ......

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)学习笔记(二)

二、以形参的形式定义和使用记录、对象类型
在用作形式参数时,记录类型和对象类型有很多相同之处。在将它们作为游标、函数或过程的形式参数以前,事先都必须定义一个记录类型或者对象类型。
如下例所示:
 
记录
DECLARE

-- Define a record type.
TYPE individual_record IS RECORD
(individual_id ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号