`
xiongpan0807
  • 浏览: 16576 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

oracle数据复杂类型(一)

阅读更多
1.
pls_integer   ------这个类型由cpu 来进行计算,可能会存在一些溢出导致错误,但是速度快
binary_integer --- 由Oracle来执行,不会出现溢出,但是执行速度较慢,因为它是由Oracle模拟执行 稳定 ,速慢
PLS_INTEGER和BINARY_INTENER唯一区别是在计算当中发生溢出时,BINARY_INTENER型的变量会被自动指派给一个NUMBER型而不会出错,PLS_INTEGER型的变量将会发生错误。

2.通过%type方式引用某个表中的数据类型
declare
  v_sal emp.sal% type;
  v_ename emp.ename% type;
  begin
    select t.sal into v_sal  from emp t where rownum =1;
    select t.ename into v_ename from emp t where rownum =1;
    dbms_output.put_line( 'v_sal===='||v_sal);
   dbms_output.put_line( 'v_ename===='||v_ename);
end;


3.一次给多个变量赋值
declare
  v_sal emp.sal% type;[list]
[*]
[/list]
  v_ename emp.ename% type;
  begin
    select t.sal , t.ename  into v_sal,v_ename  from emp t where rownum=1 ;
    dbms_output.put_line( 'v_sal===='||v_sal);
   dbms_output.put_line( 'v_ename===='||v_ename);
end;


4.通过%rowtype引用已经存在的表一列的类型
declare
  v_sal emp.sal% type;
  v_ename emp.ename% type;
  v_emp emp%rowtype;  ----引用一列使用rowtype
  begin
    select * into v_emp  from emp t where rownum =1;----这里只可以用*,不可以再指定赋值某些列(1)
    dbms_output.put_line( 'v_emp.ename===='||v_emp.ename);  ---用过变量.列名的方式取值
end;



5通过record来定义一个数据类型集合(可以解决注释(1)中的问题)
declare

    type emp_record is record(   ---- 定义一种类型 类型名称为emp_record 类似c语言中的结构体
         v_ename emp.ename%type,
         v_sal emp.sal%type,
         v_empno emp.empno%type
);
   v_emp_record emp_record;   ----定义一个变量名为v_emp_record ,类型为emp_record的变量
   v_emp_record1 emp_record;
begin

     -----将值付给变量的指定属性
   select t.sal,t.empno,t.ename into  v_emp_record.v_sal, v_emp_record.v_empno , v_emp_record.v_ename from emp t where rownum=1;
   
      -----将值付给变量(顺序按照emp_record中定义属性的顺序)
   select t.ename,t.empno, t.sal  into  v_emp_record1 from emp t where rownum=1;
  
   dbms_output.put_line('v_emp_record.ename===='||v_emp_record.v_ename);
   dbms_output.put_line('v_emp_record1.ename===='||v_emp_record1.v_ename);
end;


二  集合容器(索引表,嵌套表,varray)
  1.索引表  单列多行问题
    declare
            type num_array is table of number(5) index by binary_integer;  ---定义num_array   这种类型;
  v_num_array num_array;  
  begin
  for i in 1..10 loop
         v_num_array(i):=i;
  end loop;
      for k in reverse 1..10 loop
         dbms_output.put_line(' v_num_array('||k||')==='|| v_num_array(k));
  end loop;
end;

2 多列多行问题

declare
          ---emp%rowtype表示集合中元素类型(这里也可以上面的record类型),binary_integer 表示索引下标类型(也可以是varchar2作为下标)
  type emp_array is table of emp% rowtype index by binary_integer ;
  v_emp_array emp_array;
  begin
/*********************************************************************************************************
  *   binary_integer 表示在数据全部取出后一次性放到v_emp_array中,这时其中的多条记录相当于是一个集合了,v_emp_array也是集合类型的,
 *  所以可以正确的赋值,而不加binary_integer表示先取出一跳record就赋给v_emp_array ,两者类型不统一,所以不能赋值
***********************************************************************************************************/
select *  bulk collect   into v_emp_array  from emp t ;

   for i in v_emp_array.first..v_emp_array.last loop
      dbms_output.put_line(v_emp_array(i).ename|| '  '||v_emp_array(i).sal);
   end loop ;
end ;



3.使用varchar2作为下标的例子来罗(个人感觉和java中HashMap很像)
declare
  type name_array is table of varchar2(50) index by varchar2(20) ;
  
  v_name_array name_array;
  
  begin
           v_name_array('zhongguo'):='beijing';    
           v_name_array('meiguo'):='huashengdun';   
           v_name_array('hanguo'):='shouer';    
            dbms_output.put_line(v_name_array('hanguo'));
           
end;

--------------------------------------------------------今天就这些--------------------------------------------
分享到:
评论

相关推荐

    Oracle基本数据类型存储格式浅析

    本文将深入探讨Oracle的字符类型、数字类型、日期类型、ROWID类型和RAW类型的基本数据类型的存储机制。 首先,让我们聚焦于字符类型。在Oracle中,主要的字符类型包括CHAR、VARCHAR2和LONG。CHAR是定长字符类型,...

    oracle数据类型总结PPT

    以下是对Oracle数据类型的详细总结,特别是字符和二进制串类型。 首先,我们来看字符类型。Oracle提供了四种基本的字符数据类型:`CHAR`,`NCHAR`,`VARCHAR2`,以及`NVARCHAR2`。`CHAR`和`NCHAR`是固定长度的数据...

    java、mysql以及oracle数据类型对照表

    标题"java、mysql以及oracle数据类型对照表"揭示了本主题的核心,即比较Java、MySQL和Oracle数据库的数据类型。Java的数据类型主要分为基本类型(如int、double、boolean)和引用类型(如类、接口和数组)。MySQL和...

    Oracle与DB2数据类型分类对应说明

    Oracle 和 DB2 的数据类型分类对应关系是复杂的,我们需要根据实际情况选择合适的数据类型,以确保数据的正确性和一致性。同时,我们也需要注意在数据类型之间进行转换时的差异和注意事项,以避免数据丢失或错误。

    Oracle数据类型

    Oracle数据库中常用的数据类型主要包括字符类型、数字类型、日期时间类型以及LOB类型等,每一种数据类型适用于特定的数据存储需求。 1. 字符类型 - CHAR类型是固定长度的,用于存储定长的字符串,最多2000个字符。...

    v512工作室_张利国_Java高端培训系列教材_Oracle实用教程_04章_Oracle数据类型和函数.

    ### Oracle 数据类型详解 #### 4.1 Oracle 数据类型 ##### 4.1.1 概述 在深入了解Oracle数据库中的各种数据类型...无论是简单的字符数据类型还是复杂的用户自定义类型,Oracle都提供了丰富的选项来满足不同的需求。

    Oracle与DB2数据类型的分类对应说明

    Oracle 与 DB2 数据类型的分类对应说明 ... Oracle 和 DB2 数据类型之间的对应关系较为复杂,需要根据具体情况进行选择和转换。通过本文的说明,可以更好地理解和应用 Oracle 和 DB2 数据库管理系统。

    Oracle 数据类型及存储方式.pdf

    除了上述数据类型外,Oracle还提供了其它复合数据类型,比如ROWTYPE、TABLE等,它们可以存储记录集或表中的数据行,这些数据类型对于存储复杂数据结构非常有用。 Oracle数据库在存储数据时,采用的是页(page)的方式...

    OCCI添加Oracle特殊数据字段类型

    SDO_GEOMETRY 字段是一种复杂的数据类型,无法使用普通的数据类型来存储,因此需要使用 OCCI 来添加对该字段的支持。 OCCI 添加 Oracle 特殊数据字段支持的步骤: 1. 在 Oracle 服务器端创建一个名为 spatial_...

    Oracle数据仓库架构

    Oracle数据仓库架构还支持与各种集群数据库类型的集成,如无所共享的数据库(如IBM DB2)和共享高速缓存的Oracle9i RAC,这提供了高可用性和可伸缩性的解决方案,解决了传统单点故障的问题。通过高速交换器或...

    Oracle和数据结构

    一、Oracle数据结构基础 1. 表(Table):表是Oracle数据库中最基本的数据存储单元,由一系列行(Records)和列(Columns)组成,用来存储特定类型的数据。每列都有一个数据类型,如NUMBER、VARCHAR2或DATE等。 2....

    oracle基本数据类型及用法

    以下是对Oracle数据类型的详细解释: 1. **字符型数据类型**: - **CHAR**: 用于存储固定长度的文本数据,如果输入的数据不足指定长度,Oracle会用空格填充。 - **VARCHAR2**: 用于存储可变长度的文本,比CHAR更...

    oracle 自定义数据结构和表类型实验

    这样,你就有了一个结构化的数据单元,可以更方便地处理复杂的业务数据。 接下来,我们讨论表类型,这在Oracle中被称为集合类型。它们允许你在单个列中存储一组值,而不是单一的值。Oracle提供了两种主要的集合类型...

    oracle数据类型及函数

    理解并熟练使用Oracle的数据类型和函数,能够有效地管理数据、执行复杂的查询以及优化数据库性能。在实际应用中,根据业务需求选择合适的数据类型,利用函数进行数据处理,可以提高数据操作的效率和准确性。同时,...

    Oracle 数据挖掘手册

    以下是对该文档内容的一个综合分析,旨在帮助读者更好地理解Oracle数据挖掘的相关知识点。 ### Oracle 9i Data Mining 概念 #### 版权声明与法律条款 文档开头首先明确指出这是Oracle Corporation的专有信息,并且...

    Oracle数据类型详解

    理解Oracle数据类型对于数据库设计、开发和管理至关重要。以下是Oracle 10g中数据类型的详细讲解: 1. **数值类型** - `NUMBER(p,s)`: 最通用的数值类型,可以存储整数和小数,p代表总位数,s代表小数位数。 - `...

    oracle格式化查看json数据

    总结来说,Oracle提供了全面的JSON支持,包括数据类型、函数、操作符和PL/SQL包,以及客户端工具的增强,使我们能够方便地在数据库中存储、查询和格式化查看JSON数据。无论你是开发人员还是数据库管理员,理解并掌握...

    Oracle表类型表变量使用

    总之,Oracle的表类型和表变量是强大的工具,能够帮助开发人员更高效地管理数据和编写复杂逻辑。通过理解其概念和用法,你可以优化PL/SQL程序,提高性能,并简化代码结构。对于需要处理大量数据的业务场景,熟练掌握...

Global site tag (gtag.js) - Google Analytics