`

Oracle_数组

 
阅读更多

via: http://www.cnblogs.com/htht66/archive/2012/02/11/2346743.html

http://fxz-2008.iteye.com/blog/469766

 

Oracle数组一般可以分为固定数组和可变数组

集合:是具有相同定义的元素的聚合。Oracle有两种类型的集合:

可变长数组(VARRAY):可以有任意数量的元素,但必须预先定义限制值。

嵌套表:视为表中之表,可以有任意数量的元素,不需要预先定义限制值。

在PL/SQL中是没有数组(Array)概念的。但是如果程序员想用Array的话,就得变通一下,用TYPE   和Table   of   Record来代替多维数组,一样挺好用的。

 

固定数组

-- ============ char array =============== 

DECLARE 

  -- declare fixed array 

  TYPE arry_var IS VARRAY(2) OF VARCHAR2(10); 

  arry_name arry_var; 

BEGIN 

  -- init array 

  arry_name := arry_var('tom', 'jim','tim'); 

 

  for i in 1..arry_name.count loop  

      dbms_output.put_line(arry_name(i));  

  end loop;  

END; 

-- ================ number array ======== 

DECLARE 

  -- declare fixed array 

  TYPE arry_num IS VARRAY(10) OF NUMBER; 

  arry_top arry_num; 

BEGIN 

  -- init array 

  arry_top := arry_num(1,2,3); 

 

  dbms_output.put_line(arry_top(1)); 

  dbms_output.put_line(arry_top(2)); 

END;

1 VARRAY(10)变数数组大小为10

2OF NUMBER 表示数值类型是number

可变数组

一维数组

DECLARE 

  TYPE t_table IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER; 

  v_table t_table; 

  v_cnt   NUMBER; 

BEGIN 

  v_table(1) := '1'; 

  v_table(2) := '3'; 

  v_table(3) := '9'; 

 

  v_cnt := v_table.COUNT; 

  FOR i IN 1 .. v_cnt LOOP 

    dbms_output.put_line(v_table(i)); 

    END LOOP; 

END;

多维数组

1 Create Table

create table XXUSER 

  USER_ID   NUMBER, 

  USER_NAME VARCHAR2(255), 

  SEX       VARCHAR2(2), 

  AGE       NUMBER(3), 

  ADDRESS   VARCHAR2(2000) 

)

2 定义结果集(Record)

存放xxuser的部分字段

DECLARE 

  -- only 2 fileds 

  TYPE t_record_user IS RECORD( 

    user_id   xxuser.user_id%type, 

    user_name xxuser.user_name%type); 

 

  TYPE t_user IS TABLE OF t_record_user INDEX BY BINARY_INTEGER; 

 

  v_arry_user t_user; 

BEGIN 

  SELECT user_id, user_name BULK COLLECT INTO v_arry_user FROM xxuser; 

  FOR i IN 1 .. v_arry_user.COUNT LOOP 

    dbms_output.put_line(v_arry_user(i).user_name); 

  END LOOP; 

END;

3 使用ROWTYPE

存放xxuser的全部字段,比Record简洁。

DECLARE 

  -- ALL,XXUser(user_id, user_name, sex, age, address) 

  TYPE t_user IS TABLE OF xxuser%ROWTYPE INDEX BY BINARY_INTEGER; 

 

  v_arry_user t_user; 

BEGIN 

  SELECT * BULK COLLECT INTO v_arry_user FROM xxuser; 

  FOR i IN 1 .. v_arry_user.COUNT LOOP 

    dbms_output.put_line(v_arry_user(i).user_name || v_arry_user(i).sex); 

  END LOOP; 

END;

分享到:
评论

相关推荐

    oracle_split_函数_返回数组

    最近在oracle 中用到拆分字符串返回数组,一直头痛,因为在 oracle 中没有类似java中有split 函数 ,所以要自己写。好不容搜到一个。那网上是到处都是这个代码。怎么找都是这个方法,我就用了。这个方法如下: ...

    ORACLE数组使用方法

    ORACLE数组使用方法,文档,详细介绍Oracle中数组如何使用

    ORACLE存储过程中定义数组并且判断某值是否在数组中.txt

    ORACLE存储过程中定义数组并且判断某值是否在数组中。有例子可執行、 、有例子可執行、

    oracle中的数组使用

    oracle中的数组使用 oracle中的数组使用 oracle中的数组使用 oracle中的数组使用 oracle中的数组使用 oracle中的数组使用

    oracle数组实现

    基于oracle的数组实现,使用自定义类型的方式实现

    oracle数组

    oracle数组操作,包含固定数组、可变数组、可变数组取表

    Oracle数组的使用

    oracle中存储过程和定义方法时使用的数组形式

    c语言解析csv,oracle_oci接口封装

    对ORACLE_OCI进行封装,能执行PL/SQL匿名块,过程,函数,SQL的DDL,DML,DCL,SELECT数据提取等。可以绑定32000大小的实变量数组到虚变量。速度很快,从远程数据库下载1.5G大小的数据到本地CSV文件,用时不到12分钟。

    Oracle_Database_11g完全参考手册.part2/3

    第39章 收集器(嵌套表和可变数组) 第40章 使用大对象 第41章 面向对象的高级概念 第42章 JAVA简介 第43章 JDBC程序设计 第44章 JAVA存储过程 第Ⅶ部分 指南 第45章 Oracle数据字典指南 第46章 应用程序和SQL调整...

    Oracle_Database_11g完全参考手册.part3/3

    第39章 收集器(嵌套表和可变数组) 第40章 使用大对象 第41章 面向对象的高级概念 第42章 JAVA简介 第43章 JDBC程序设计 第44章 JAVA存储过程 第Ⅶ部分 指南 第45章 Oracle数据字典指南 第46章 应用程序和SQL调整...

    oracle数组存储过程批量插入

    今天做了一个关于短消息批量删除的功能, ... 所以就决定用 数组作为存储过程的参数进行传值,在存储过程中批量删除。说实话这个选择有点得不偿失,本来以为上午就能搞定,谁知道从摸索到实现,居然发了大半天时间。

    oracle可变数组

    一个可变数组是对象的一个集合,其中每个对象都具有相同的数据类型。可变数组的大小由创建时决定。在表中建立可变数组后,可变数组在主表中作为一个列对待。从概念上讲,可变数组是一个限制了行集合的嵌套表。

    Oracle学习笔记(嵌套表、可变数组)

    Oracle学习笔记(嵌套表、可变数组),有具体的代码案例供大家参考

    oracle数组定义与使用.pdf

    oracle数组定义与使用.pdf

    oracle存储过程返回多行多列的结构化数组,java调用并解析

    java调用oracle输出参数为多行多列的结构化数组的存储过程,并将其遍历解析;该demo部署后,只需要配置poolman.xml数据源,即可运行;

    oledb-2-13.zip_atl Ole DB oracle_atl ole

    ATL OLE_DB数据库引擎模板保存数据到一个简单的数组(42KB)

    shell连接oracle数据库执行SQL工具脚本-支持select+inset+update

    shell连接oracle数据库工具脚本:支持select/insert/update/delete 部署位置:/root/sysmonitor db:数据库文件夹 dbconfig.properties:数据库配置文件, dbConnectTest.sh:连接测试文件 dbExecurteSQL.sh:...

    oracle.10g.程序包数组参数oracle-character-set-852

    oracle.sql.ARRAY array = new oracle.sql.ARRAY(desc, con, var数组); -- 报错 不支持 oracle-character-set-852 pstmt.setArray(1, array); pstmt.executeUpdate(); 将10g版本配套的3个文件集中到一起, ...

    c#调用Oracle UDT自定义结构数组类型源代码

    c#调用Oracle UDT自定义结构数组类型源代码

    Oracle定义联合数组及使用技巧

    在ORACLE 10G中,以及在ORACLE 10G以前的版本中,都可以使用数字索引联合数组。另外,在ORACLE 10G中,还可以使用具有唯一性的变长字符串作为联合数组的索引。 可以使用任意的整数作为联合数组的索引

Global site tag (gtag.js) - Google Analytics