pl/sql 有三种数组类型,到现在为止只用过叫“关联数组集合类型”的数组。
一、定义类型
type <我们自己的数组类型的名字> is table of <datatype>[
not null] index by index_type;
其中 datatype是必须的。index by index_type 可以省略。如:
-- Public type declarations
-- TYPE < TYPENAME > IS < DATATYPE >;
TYPE SEQID_AAT IS TABLE OF D_INV_ALARM_SEQ.SEQ_ID%TYPE INDEX BY BINARY_INTEGER;
类型定义一般放在包体或者包头的定义类型的区域。
index by 的数据类型可以是BINARY_INTEGER以及它的子类,
下面的都是有效的:
index by binary_integer
index by pls_integer
index by positive
index by natural
index by singtype (只有 -1、0、1三个值)
index by varchar2(32767)
index by table.column%type
index by cursor.column%type
index by package.variable%type
index by package.subtype
二、初始化
我这里定义的数组的index by类型是 binary_integer。
BEFORE_FIRST_TAB SEQID_AAT; --声明一个数组
SELECT A.SEQ_ID BULK COLLECT
BULK COLLECT INTO BEFORE_FIRST_TAB
FROM D_INV_ALARM_SEQ A
WHERE A.SEQ_NUM < V_SEQ_NUM;
注意事项:数组的下标是由数据库提供的,下标从1开始。
三、使用数组
呵呵使用一个数组(或者集合),专家们喜欢加遍历。
FOR SEQ_INDEX IN 1 .. BEFORE_FIRST_TAB.COUNT LOOP
UPDATE D_INV_ALARM_SEQ A
SET A.SEQ_NUM = A.SEQ_NUM + IN_LENGTH
WHERE A.SEQ_ID = BEFORE_FIRST_TAB(SEQ_INDEX);
END LOOP;
分享到:
相关推荐
NULL 博文链接:https://dolphin-ygj.iteye.com/blog/440204
·创建、调试和管理Oracle 驱动的PL/SQL 程序; ·使用PL/SQL 结构体、分隔符、运算符、变量和语句; ·使用PLSQL_WARNINGS 和异常处理程序标识和消除错误; ·使用函数、过程、包、集合和触发器; ·定义...
PL/SQL有三种集合 联合数组 嵌套表 可变数组 联合数组详解: 什么是数组?数组有什么特点 数据是线性存放的,在内存中地址是连续的 可以用索引来访问 定义联合数组? 联合数组不需要定义长度,他能容纳的元素最大...
在学习PL/SQL时的编的一些练习! 包括PL/SQL的数组类型的使用、 游标的各种用法、文件的使用、异常的定义和处理等
使用复合数据类型 8.1 PL/SQL记录 8.1.1 定义PL/SQL记录 8.1.2 使用PL/SQL记录 8.2 PL/SQL集合 8.2.1 索引表 8.2.2 嵌套表 8.2.3 变长数组(VARRAY) 8.2.4 PL/SQL记录表...
·创建、调试和管理Oracle 驱动的PL/SQL 程序; ·使用PL/SQL 结构体、分隔符、运算符、变量和语句; ·使用PLSQL_WARNINGS 和异常处理程序标识和消除错误; ·使用函数、过程、包、集合和触发器; ·定义...
甚至使用 OUT 参数调用存储过程,或发送/检索 PL/SQL 数组类型 - 只需在Exec的参数中提供一个godror.PlSQLArrays选项! 例如,返回的 PL/SQL 数组的数组大小可以通过godror.ArraySize(2000) (默认
将字符串分割成数组: ...用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from table(my_split('7369,7499,7521,7844',',')));
Oracle 9i第2版扩充了INDEX BY表格功能,允许以文字为下标。这使得联合数组更像是其它语言,如Perl中的杂凑表格。为说明文字字符串可成为目录值,简单使用INDEX BY VARCHAR2,不要使用惯常的INDEX BY BINARY_INTEGER...
联合数组以前被称为PL/SQL表。在表中不能使用联合数组,只能将它们用作程序设计的结构体。只能在PL/SQL中访问联合数组。 注意到联合数组带来的一些关键问题是非常重要的。这些问题使我们介绍它们的用法时,需要采取...
第32章 使用本地动态SQL和DBMS_SQL 第Ⅴ部分 对象关系数据库 第33章 实现类型、对象视图和方法 第34章 收集器(嵌套表和可变数组) 第35章 使用大对象 第36章 面向对象的高级概念 第Ⅶ部分 Oracle中的Java 第37章 Java...
第36章 使用本地动态sql 和dbms_sql 第37章 pl/sql 调整 第ⅴ部分 对象关系数据库 第38章 实现对象类型、对象视图和方法 第39章 收集器(嵌套表和可变数组) 第40章 使用大对象 第41章 面向对象的高级...
1、首先用PL/SQL创建package 1 create or replace package excuteBatchOperate 2 as 3 type sqlStr_Array is table of varchar2(1000) index by binary_integer; 4 procedure excuteBulkData(sqlStr in sqlStr...
§15.4 在 PL/SQL 中使用 sqlcode,sqlerrm 273 第十六章 存储过程和函数 276 §16.1 引言 276 §16.2 存储过程 276 §16.2.1 创建过程 276 §16.2.2 使用过程 278 §16.2.3 开发存储过程步骤 279 §16.2.3.1 编辑...
第36章 使用本地动态sql 和dbms_sql 第37章 pl/sql 调整 第ⅴ部分 对象关系数据库 第38章 实现对象类型、对象视图和方法 第39章 收集器(嵌套表和可变数组) 第40章 使用大对象 第41章 面向对象的高级...
第36章 使用本地动态sql 和dbms_sql 第37章 pl/sql 调整 第ⅴ部分 对象关系数据库 第38章 实现对象类型、对象视图和方法 第39章 收集器(嵌套表和可变数组) 第40章 使用大对象 第41章 面向对象的高级...
Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL;... 行4: NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句; 行5: END关键
§15.4 在 PL/SQL 中使用 sqlcode,sqlerrm 273 第十六章 存储过程和函数 276 §16.1 引言 276 §16.2 存储过程 276 §16.2.1 创建过程 276 §16.2.2 使用过程 278 §16.2.3 开发存储过程步骤 279 §16.2.3.1 编辑...