当前位置:  数据库>oracle

Oracle的collection二维操作

    来源: 互联网  发布时间:2017-05-18

    本文导语: Oracle collection 是PL SQL开发中会用到一个对象,它表示一组有序的元素组成,一个组中元素的类型必须保持一致。它分成3 类,分别为Associative arrays(也称index-by tables)、Nested tables 、Varrays。  第一个Associative arrays,可看成数据字典...

Oracle collection 是PL SQL开发中会用到一个对象,它表示一组有序的元素组成,一个组中元素的类型必须保持一致。它分成3 类,分别为Associative arrays(也称index-by tables)、Nested tables 、Varrays。

 第一个Associative arrays,可看成数据字典,有key,value两列。key值可以是任意数字和字符串,value值可以是任意对象、甚至是collection类型的对象。

 第二个Nested tables,可看着一维数组,使用数字编号可以依次操作每个数组元素。
 第三个Varrays,可看着预先定义好长度的一维数组,使用数字编号可以依次操作每个数组元素。
 
这三类的定义和初始化的方法如下:
 type typ_dict is table of varchar2(100) index by varchar2(10); 
 type typ_array is table of integer; 
 type typ_varray is varray(3) of varchar2(10); 
 v_dict  typ_dict; 
 v_array  typ_array := typ_array(); 
 v_varray typ_varray := typ_varray(null, null, null); 
 
这些类除掉普通的数据类型外,还有遇到object类型。这点和面向对象编程的语言有些相似,但功能没那么强大。
 例如定义一个有多个VARCHAR2组成的对象。
 CREATE OR REPLACE TYPE obj_food AS OBJECT (
      name VARCHAR2( 100 )
    , food_group VARCHAR2( 100 )
    , color VARCHAR2( 100 )
  );
 
CREATE TYPE typ_array_food IS table OF obj_food;
 
l_food      typ_array_food := typ_array_food();
 
示例一,
 DECLARE
  l_food      typ_array_food := typ_array_food();
 BEGIN
  l_food.extend(3);
  l_food(1) := obj_food('Scrambled Eggs', 'Protein', 'Yellow');
  l_food(2) := obj_food('Deluxe Salad', 'Vegetables', 'Mostly Green');
  l_food(3) := obj_food('Tofu and Rice', 'Protein', 'White');
 
  dbms_output.put_line('food(1)=' || l_food(1).name);
 
    for j in 1 .. l_food.count loop
      dbms_output.put_line('food('||j||')=' || l_food(j).name);       
    end loop;   
 
END;
 
结果如下:
 SQL> set serveroutput on
 SQL> /
 
 food(1)=Scrambled Eggs
 food(1)=Scrambled Eggs
 food(2)=Deluxe Salad
 food(3)=Tofu and Rice
 
 PL/SQL procedure successfully completed

这个例子是一维数组的例子,如果我们要使用二维数组,又该如何定义?


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ORACLE日期相关操作
  • Linux下如何用C语言操作Oracle数据库相关的图书推荐
  • Oracle终于涉入支持Linux操作系统了
  • Linux平台下Oracle的操作
  • linux c 怎样利用pro*c/c++操作 win2000 下 oracle 谢谢
  • Window客户端通过ADO是否能够连接和操作Unix平台下的Oracle数据库?
  • Oracle将字符编码从GBK转到UTF8,如何操作比较稳妥?
  • 如何设定linux red hat 9的oracle9,让window的电脑可以操作数据库
  • linux oracle数据库删除操作指南
  • Linux环境中Oracle数据导入与导出备份操作
  • Oracle针对数据库某一行进行操作的时候,如何将这一行加行锁
  • oracle的plsql里有没有位操作的功能
  • fedora core5 (FC5) 下面不能装 Oracle 10g 么? (检查操作系统就通不过啊,晕)
  • Linux操作系统下Oracle数据库多实例启动方式及修改内存
  • 怎样在c语言的代码里内嵌的操作oracle数据库,各位大虾谢谢了
  • 一个关于JAVA操作oracle数据库时UPDATE权限的问题
  • oracle 11g最新版官方下载地址 iis7站长之家
  • Oracle 数据库操作技巧集
  • secureCRT远程连接服务器操作oracle数据库出现的问题
  • 请教各位:JAVA操作ORACLE的问题 急!!!
  • 学习登录oracle数据库时常用的操作命令
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,