`
xiongpan0807
  • 浏览: 15916 次
  • 性别: 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关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,本文向大家介绍使用SQL查两个Oracle数据表查询的相同数据的方法。第一种方法:利用操作符intersect,intersect操作符...

    oracle导出时间格式转换

    大家都知道,从oracle数据库中导出数据时,如果其中有字段类型为date,那么导出时将会变成to_date('29-...本程序实现了将oracle数据导出文件中的to_date('x','y')转换成'x'的功能,并去掉了一些非SQL语句,如prompt...

    Navicat for Oracle 10.1.7

    它可以在Oracle数据库8i以上的版本中运行,并且支持大部份最新的Oracle功能,包括目录、数据表空间、同义词、物化检索、触发器、序列及类型等。Navicat的的功能不仅可以满足专业开发人员的所有需求,而且对Oracle的...

    oracle database 10g 完整参考手册part1

    第42章 Oracle数据字典指南 第43章 调整应用程序和SQL旅行者指南 第44章 调整中的案例分析 第45章 Oracle Application Server 10g的旅行者指南 第46章 数据库管理旅行者指南 第47章 XML旅行者指南

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二) ...

    Oracle11g从入门到精通2

    7.1.2 隐藏数据的复杂性 7.1.3 实现命名简洁性和易读性 7.1.4 实现更改灵活性 7.2 实现记录的唯一性 7.2.1 用键实现 7.2.2 创建唯一索引 7.2.3 使用序列实现 7.3 实现数据的完整性 7.3.1 域完整性 ...

    Oracle优化日记:一个金牌DBA的故事 白鳝.扫描版

    全局热块冲突优化小技巧 PL/SQL中数据类型的性能5月23日 实时ODS今日点评优化小技巧 ODS系统中Oracle数据库设计管理要点优化小技巧 ODS系统中的开发要点优化小技巧 集合类型的效率5月24日 任务提前今日点评优化小...

    oracle11g

    第三章:SQL的数据类型 第四章、WHERE子句中常用的运算符 第五章:分组函数 第六章:数据限定和排序 第七章:复杂查询(上):多表连接技术 第八章:复杂查询(下):子查询 第二部分:用户及数据库对象 第九...

    Oracle 10g应用指导

    第4章 Oracle数据字典管理与数据类型。包括数据字典的分类、使用方法以及各种对象的具体查询等做了详细的介绍。第5章 数据库对象的创建与使用。主要包括各种类型的表创建以及适用情形,如外部表、分区表、嵌套表、...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。 四、 如何学习 认真听课、多思考问题、多动手操作、有问题一定要问、多参与讨论、多帮组同学 五、 体系结构 ...

    Oracle对两个数据表交集的查询

    下面向大家介绍使用SQL查两个Oracle数据表查询的相同数据的方法,笔者感到这两种方法执行效率高、使用方便。 第一种方法:利用操作符intersect intersect操作符用来合并两个查询,返回两个查询中都存在的记录,即...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

    读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录类型、集合类型...

    Oracle11g从入门到精通

    7.1.2 隐藏数据的复杂性 7.1.3 实现命名简洁性和易读性 7.1.4 实现更改灵活性 7.2 实现记录的唯一性 7.2.1 用键实现 7.2.2 创建唯一索引 7.2.3 使用序列实现 7.3 实现数据的完整性 7.3.1 域完整性 7.3.2 ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习...

    Oracle实用教程

    Oracle实用教程 一至八章 数据库基础 Oracle数据库入门 数据库查询 数据类型和函数 复杂查询 事物控制 数据库对象 数据库设计

    Oracle+10g应用指导与案例精讲

    第4章 Oracle数据字典管理与数据类型。包括数据字典的分类、使用方法以及各种对象的具体查询等做了详细的介绍。第5章 数据库对象的创建与使用。主要包括各种类型的表创建以及适用情形,如外部表、分区表、嵌套表、...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    oracle database 11g 高清完整中文版part2

     第45章 oracle 数据字典指南  第46章 应用程序和sql 调整指南  第47章 sql 结果缓存和客户端查询缓存  第48章 关于调整的示例分析  第49章 高级体系结构选项—— db保险库、内容db 和记录db  第50章 oracle ...

Global site tag (gtag.js) - Google Analytics