`

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数据库中,由于内置函数不直接支持像Java中的`split`那样拆分字符串并返回数组,因此开发者需要自定义函数来实现这一功能。这里提到的两种方法都是为了解决这个问题,即根据指定的分隔符将字符串拆分为一个...

    ORACLE数组使用方法

    ORACLE 数组使用方法 Oracle 数组是一种复杂的数据类型,可以存储多个元素,数组可以分为固定数组和可变数组两种类型。在 Oracle 中,数组可以用来存储大量的数据,并且可以通过索引来访问数组中的元素。 固定数组...

    oracle数组

    Oracle 数组 Oracle 数组是 Oracle 数据库中的一种复杂数据类型,可以存储多个元素。数组可以是固定大小的,也可以是可变大小的。在 Oracle 中,数组可以用来存储多个元素,并且可以对数组进行各种操作,例如遍历、...

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

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

    导Excel_oracle_delphi7_DELPHI7导入oracle_

    例如,如果Oracle字段是RAW类型,那么16进制字符串需要转换为字节数组。 5. **数据导入流程**: - 打开Excel文件并读取数据。 - 遍历数据,将16进制数据转换为10进制,或将10进制数据转换为16进制,根据Oracle表...

    oracle数组实现

    ### Oracle数组实现概述 在Oracle数据库中,数组是一种非常有用的数据结构,用于存储相同类型的多个元素。它可以帮助我们更高效地处理大量数据,并简化代码逻辑。Oracle提供了几种不同的方式来实现数组,包括VAR...

    oracle中的数组使用

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

    Oracle数组的使用

    根据提供的文件信息,我们可以深入探讨Oracle数据库中数组的使用及其在存储过程中的应用方式。这里主要涉及了两种类型的数组:`VARRAY` 和 `ASSOCIATIVE ARRAY`(也称为 `INDEXED TABLE`)。接下来,我们将详细解释...

    oracle数组存储过程批量插入

    Oracle数据库支持通过数组参数来进行批量操作,这在处理大量数据时能显著提高性能。在本例中,我们探讨了如何使用数组存储过程进行批量插入和删除。数组在Oracle中的使用通常涉及定义PL/SQL类型,这允许我们创建索引...

    Oracle_8i高级程序设计

    记录允许存储多列数据,而数组则可以处理批量数据。 7. **动态SQL**:在PL/SQL中,可以构建和执行动态SQL语句,这在处理不确定的或在运行时确定的查询结构时非常有用。 8. **包(Package)**:包是将相关的类型、...

    oracle_sql_plsql课程资料.zip

    集合是PL/SQL中的数组类型,可以存储一组同类型的值,这对于批量处理数据非常有用。 6. 异常处理:PL/SQL提供了一套强大的异常处理机制,允许开发者编写健壮的代码,能够优雅地处理错误和异常情况。通过BEGIN......

    oracle可变数组

    在Oracle数据库中,可变数组(VARRAY)是一种特殊类型的集合数据结构,类似于我们通常理解的数组,但提供了更强大的功能和灵活性。根据给定文件中的描述,“可变数组与嵌套表相似,也是一种集合。一个可变数组是对象...

    PLSQL.rar_oracle_plsql

    Oracle支持数组、记录(也称为复合对象)和嵌套表等复合类型。数组允许存储相同类型的多个值,而记录则能封装多个相关属性。嵌套表是可变大小的一维集合,可以包含不同类型的数据。这些复合类型可以增强代码的灵活性...

    BLOG_Oracle_lhr_Oracle死锁的分类及其模拟.pdf

    Intent Lock List(ITL)是Oracle中用于存储事务锁定信息的数组,位于数据块中。每个数据行都有一个与之关联的ITL条目,用于记录事务对行的操作状态。当并发事务请求同一行的锁定时,ITL条目可能会成为死锁的源头。 ...

    精通Oracle_10g_Pl_SQL编程(上下册)

    1. **PL/SQL高级特性**:包括包(Packages)、嵌套表(Nested Tables)、关联数组(Associative Arrays)等复杂数据类型的使用。 2. **并发控制**:如锁定机制,以及如何在多用户环境中确保数据的一致性和完整性。 ...

    Oracle2BPL-SQL.rar_oracle_pl/sql

    5. **集合**:PL/SQL支持多种集合类型,如VARrays(固定大小数组)和PL/SQL表(动态大小数组)。集合使你能同时处理多行数据。 6. **记录类型**:允许你创建自定义数据结构,类似于结构或类,包含多个字段。 7. **...

    oracle数组存储过程批量插入.pdf

    Oracle 数组存储过程批量插入 本文主要讲解了如何使用 Oracle 数组存储过程来实现批量插入功能。通过创建一个存储过程,使用数组作为参数来传递大量数据,然后在存储过程中进行批量插入操作。 首先,需要创建一个...

    JDBC.rar_jdbc PostgreSQL_oracle_postgresql

    PostgreSQL支持多种数据类型,如JSON、XML、数组、HSTORE等,还提供了事务处理、复杂的查询、触发器、视图等特性。连接到PostgreSQL数据库,我们需要一个支持PostgreSQL的JDBC驱动,如`org.postgresql.Driver`,然后...

    Oracle_database_11g完全参考手册

    `TOOLS_VA`类型的定义演示了变长数组(VARRAY)的用法,这是一种固定上限的数组类型,可以存储相同类型的多个元素。这里的例子中,`TOOLS_VA`可以存储最多5个`VARCHAR2`类型的字符串。 ### 四、表结构与数据插入 ...

Global site tag (gtag.js) - Google Analytics