oracle的数组
来源:互联网 发布:淘宝运营推广计划 编辑:程序博客网 时间:2024/05/21 14:55
PLSQL学习(二) 数组专题
http://www.blogjava.net/decode360/archive/2008/08/08/280825.html
PLSQL中提供了三种数据的形式,功能还是比较强大的。但是总的来说,PLSQL中的数组知识掌握最简单的那种,其他大致了解就可以了。因为从实际应用的角度来说,在PLSQL中用到数组的几率不是很大。这主要是由于PLSQL跟数据库的紧密结合特性所决定的,数据库的表可以很轻易得实现基本的数组功能。当然这是我个人的一点理解,不一定正确。下面是详细介绍
TYPE nested_type IS TABLE OF VARCHAR2 ( 30 ) [not null];
-- 值为varchar2的数组,下标为默认int ;
TYPE Calendar IS VARRAY ( 366 ) OFNUMBER;
--366 个number数组,下标1-366( 不是 0-365)
TYPE population_type IS TABLE OF NUMBER
INDEX BY VARCHAR2 ( 64 );
--下标是varchar2,值是number 的数组
DECLARE
TYPEwordlistISTABLEOFVARCHAR2 ( 5 );
words wordlist;
BEGIN
words( 1 ) := 10 ; --COLLECTION_IS_NULL,未赋空间
words := wordlist(10,20 , 30 ); --进行赋值
words( 1 ) := 'yes' ; --正确
words( 2 ) := words( 1 ) || 'no';--正确
words( 3 ) := 'longer than 5 characters' ;--VALUE_ERROR,字符过长
words( 'B' ) := 'dunno' ; --VALUE_ERROR,下标错误
words( 4 ) := 'maybe' ; --SUBSCRIPT_BEYOND_COUNT,下标超限
END ;
IF courses.EXISTS(i) THEN
courses(i) := new_course;
END IF ;
FOR i IN 1 .. courses.COUNT LOOP...
注意:COUNT会忽略已经被删除的元素
IF (projects.COUNT + 15 ) < projects.LIMIT THEN ...
FOR i IN courses.FIRST .. courses.LAST LOOP...
n := courses.PRIOR(courses.FIRST); --assigns NULL to n
courses.EXTEND( m , n ); --将第n个元素的值复制m份加到集合末端
courses.TRIM( 3 ); --与extend相反
courses.DELETE -- 删除全部
courses.DELETE(2) --删除第2个元素
courses.DELETE( 2 , 5 ) --删除第2到第5 个元素
COLLECTION_IS_NULL ---调用一个空集合的方法,集合未被初始化
NO_DATA_FOUND ---下标索引指向一个被删除的元素,或是关联数组中不存在的元素
SUBSCRIPT_BEYOND_COUNT ---下标索引值超过集合中的元素个数
SUBSCRIPT_OUTSIDE_LIMIT---下标索引超过允许范围之外
VALUE_ERROR ---下标索引值为空,或是不是指定的下标类型
FORALL i IN pnums.FIRST .. pnums.LAST
INSERT INTO partno VALUES(pnums(i)); ---注意:不用再Loop了
IF SQL % BULK_ROWCOUNT ( 3 ) = 0THEN...
表示如果第3次操作没有对数据影响的行数为0话……注意%BULK_ROWCOUNT的值是可以大于1的,比如批量插入等
DECLARE
TYPEnumlistISTABLEOFNUMBER ;
num_tab numlist := numlist(10,0,11,12,30,0,20,199,2,0,9,1);
ERRORS NUMBER;
dml_errors EXCEPTION ;
PRAGMAEXCEPTION_INIT(dml_errors, -24381 );
BEGIN
FORALLiINnum_tab.FIRST .. num_tab.LASTSAVEEXCEPTIONS
DELETEFROMemp
WHEREsal >500000/ num_tab(i);
EXCEPTION
WHENdml_errorsTHEN
ERRORS :=SQL %BULK_EXCEPTIONS.COUNT;
DBMS_OUTPUT.put_line('Number of errors is '||ERRORS);
FORiIN1..ERRORSLOOP
DBMS_OUTPUT.put_line( 'Error '
|| i
||' occurred during '
||'iteration '
||SQL% BULK_EXCEPTIONS (i).ERROR_INDEX);
DBMS_OUTPUT.put_line( 'Oracle error is '
||SQLERRM(- SQL % BULK_EXCEPTIONS (i).ERROR_CODE));
ENDLOOP;
END ;
oracle嵌套表类型
http://hi.baidu.com/%B5%D4%B4%F3%B9%D9%C8%CB/blog/item/caf3ba76d8db07038701b037.html
- Oracle数组的使用
- Oracle 数组的学习
- oracle里的数组
- Oracle的数组
- oracle的数组
- Oracle的数组类型
- oracle数组的使用
- Oracle 数组的学习
- Oracle数组的使用
- Oracle的数组的学习
- oracle中数组的运用
- oracle 类似数组的type
- oracle的函数和数组的使用
- oracle数组
- oracle 数组
- oracle 数组
- oracle 数组
- Oracle 数组
- VC 移动,复制,删除文件
- 网易tabhost使用以及添加动态移动背景
- 打算编写一gis的软件练练手,内容大致micaps的,项目暂定G-Micaps
- PQI Air Card:自带Wi-fi的闪存卡 即时分享精彩画面
- 批处理读取FTP指定目录下的所有 子目录名
- oracle的数组
- C# 完美实现多语言版本Windows应用程序
- android学习----(三)android项目结构详解
- Linux crontab应用
- 【Android自动化打包】03. APK的数字签名
- linux下解压命令大全
- SMT物料基础知识--PCB好帮手
- 我们公司和普通软件公司的区别
- PHP 获取WindowOS下MAC地址