oracle这么强大的数据库能使用数组的
在oracle中,数组主要是用来存储批量数据,一次性的对数据库进行插入,更新,删除操作.
下面给你一个批量插入的例子,其他都类似的
这是我的blog上面有例子,你自己看看吧.
除了构造函数外,集合还有很多内建函数,这些函数称为方法. 调用方法的语法如下: collectionmethod 下表中列出oracle中集合的方法 方法 描述 使用限制 COUNT 返回集合中元素的个数 DELETE 删除集合中所有元素 DELETE() 删除元素下标为x的元素oracle怎么使用数组
declare
--定义IntArray 类型,该类型是每个元素为int类型的数组
Type IntArray is table of int;
--定义一个IntArray 类型的变量
v_array IntArray := IntArray();
begin
--向数组中存入数据
for i in 1.. 100 loop
--需要扩展数组
v_array.extend;
v_array(i) := i;
end loop;
--输出数组的内容
dbms_output.put_line(v_array(i));
end;
SQL set serverout on;
SQL declare
①.0 v_array.extend;
①.1 v_array(i) := i;
PL/SQL procedure successfully completed
SQL
ORACLE在PL/SQL中是没有数组(Array)概念的.但是如果程序员想用Array的话,就得变通一下,用TYPE 和Table of Record来代替多维数组,一样挺好用的.
集合:是具有相同定义的元素的聚合.Oracle有两种类型的集合:
可变长数组(VARRAY):可以有任意数量的元素,但必须预先定义限制值.
嵌套表:视为表中之表,可以有任意数量的元素,不需要预先定义限制值.
A intarray;
TYPE T_EMP IS TABLE OF EMP%ROWTYPE INDEX BY BINARY_INTEGER;
A_EMP T_EMP;
I BINARY_INTEGER := 0;
FOR REC IN (SELECT EMPNO,ENAME FROM EMP) LOOP
I := I ◆ 1;
A_EMP(I).EMPNO := REC.EMPNO;
END LOOP;
l:= A_EMP.first;--使用first方法
loop
exit when l is null;
dbms_output.put_line(l||':'|| A_EMP(l).ENAME );
l:=A_EMP.next(l);
pl/sql预定义了在varray 和嵌套表实例上进行调用的方法.这些方法能在集合上执行一定的功能.
EXISTS该函数返回集合中第一个元素的索引,如果集合为空,返回NULL
Collection.EXISTS(index)
COUNT该函数集合元素的数目
Collection.COUNT
DELETE该过程从嵌套表中删除一个或多个或合部元素
Table_name.DELETE 删除所有元素
Table_name.delete(index)删除指定索引的记录
Table_name.delete(start_index,end_index)删除区间内元素
FIRST返回集合第一个元素索引,如果集合为空,返回NULL
Collection.FIRST
LAST返回集合中最后一个元素索引,如果集合为空,返回NULL
Collection. LAST
NEXT返回集合当前元素的下一个元素的索引,如果它不存在就返回NULL
Collection. NEXT
PRIOR返回集合当前元素的上一个元素的索引,如果它不存在就返回NULL
Collection. PRIOR
LIMIT返回varray中创建元素的最大个数
Collection. LIMIT
EXTENDS该过程在集合的末尾添加新的元素
Collection.EXTEND添加一个NULL元素;Collection.extends(n)添加N个NULL元素,Collection.extend(n,index)添加由index指定位置上元素的n个副表
TRIM从集合末尾处删除元素
Collection.TRIM 删除最后一个元素
Collection.TRIM(n)删除最后N个元素
返回字符数组.
/*============================================*
* Author? : SANFU
* ALERTER? :
* ALERTER_TIME? :
* Purpose? :? 获取字符数组
* Obj_Name? ? : GET_STRARRAY
* AV_STR : 要分割的字符串
* AV_SPLIT : 分隔符号
*============================================*/
? ? ? ? ? ? ? ? ? ? ? ) RETURN role_name_tb_type IS
? v_length? NUMBER;
? role_name_tb role_name_tb_type := role_name_tb_type();
BEGIN
? v_length := scmdata.sf_import_company_users_pkg.get_strarraylength(v_av_str,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? v_av_split);
FOR i IN 0 .. (v_length - 1) LOOP
? ? --扩展数组
? ? role_name_tb.extend;
? ? SELECT scmdata.sf_import_company_users_pkg.get_strarraystrofindex(v_av_str,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? v_av_split,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? i)
? ? ? INTO role_name_tb(role_name_tb.count)
? ? ? FROM dual;
? /*? ? for i in 0 .. (v_length - 1) loop
? ? dbms_output.put_line(role_name_tb(i));
end loop;*/
? RETURN role_name_tb;
END get_strarray;
在PL/SQL中是没有数组(Array)概念的,但是如果程序员想用Array的话,可以用TYPE和 Table of Record变通一下,来代替多维数组.
以上就是土嘎嘎小编为大家整理的oracle怎么用数组相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!