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的字符类型、数字类型、日期类型、ROWID类型和RAW类型的基本数据类型的存储机制。 首先,让我们聚焦于字符类型。在Oracle中,主要的字符类型包括CHAR、VARCHAR2和LONG。CHAR是定长字符类型,...
以下是对Oracle数据类型的详细总结,特别是字符和二进制串类型。 首先,我们来看字符类型。Oracle提供了四种基本的字符数据类型:`CHAR`,`NCHAR`,`VARCHAR2`,以及`NVARCHAR2`。`CHAR`和`NCHAR`是固定长度的数据...
标题"java、mysql以及oracle数据类型对照表"揭示了本主题的核心,即比较Java、MySQL和Oracle数据库的数据类型。Java的数据类型主要分为基本类型(如int、double、boolean)和引用类型(如类、接口和数组)。MySQL和...
Oracle 和 DB2 的数据类型分类对应关系是复杂的,我们需要根据实际情况选择合适的数据类型,以确保数据的正确性和一致性。同时,我们也需要注意在数据类型之间进行转换时的差异和注意事项,以避免数据丢失或错误。
Oracle数据库中常用的数据类型主要包括字符类型、数字类型、日期时间类型以及LOB类型等,每一种数据类型适用于特定的数据存储需求。 1. 字符类型 - CHAR类型是固定长度的,用于存储定长的字符串,最多2000个字符。...
### Oracle 数据类型详解 #### 4.1 Oracle 数据类型 ##### 4.1.1 概述 在深入了解Oracle数据库中的各种数据类型...无论是简单的字符数据类型还是复杂的用户自定义类型,Oracle都提供了丰富的选项来满足不同的需求。
Oracle 与 DB2 数据类型的分类对应说明 ... Oracle 和 DB2 数据类型之间的对应关系较为复杂,需要根据具体情况进行选择和转换。通过本文的说明,可以更好地理解和应用 Oracle 和 DB2 数据库管理系统。
除了上述数据类型外,Oracle还提供了其它复合数据类型,比如ROWTYPE、TABLE等,它们可以存储记录集或表中的数据行,这些数据类型对于存储复杂数据结构非常有用。 Oracle数据库在存储数据时,采用的是页(page)的方式...
SDO_GEOMETRY 字段是一种复杂的数据类型,无法使用普通的数据类型来存储,因此需要使用 OCCI 来添加对该字段的支持。 OCCI 添加 Oracle 特殊数据字段支持的步骤: 1. 在 Oracle 服务器端创建一个名为 spatial_...
Oracle数据仓库架构还支持与各种集群数据库类型的集成,如无所共享的数据库(如IBM DB2)和共享高速缓存的Oracle9i RAC,这提供了高可用性和可伸缩性的解决方案,解决了传统单点故障的问题。通过高速交换器或...
一、Oracle数据结构基础 1. 表(Table):表是Oracle数据库中最基本的数据存储单元,由一系列行(Records)和列(Columns)组成,用来存储特定类型的数据。每列都有一个数据类型,如NUMBER、VARCHAR2或DATE等。 2....
以下是对Oracle数据类型的详细解释: 1. **字符型数据类型**: - **CHAR**: 用于存储固定长度的文本数据,如果输入的数据不足指定长度,Oracle会用空格填充。 - **VARCHAR2**: 用于存储可变长度的文本,比CHAR更...
这样,你就有了一个结构化的数据单元,可以更方便地处理复杂的业务数据。 接下来,我们讨论表类型,这在Oracle中被称为集合类型。它们允许你在单个列中存储一组值,而不是单一的值。Oracle提供了两种主要的集合类型...
理解并熟练使用Oracle的数据类型和函数,能够有效地管理数据、执行复杂的查询以及优化数据库性能。在实际应用中,根据业务需求选择合适的数据类型,利用函数进行数据处理,可以提高数据操作的效率和准确性。同时,...
以下是对该文档内容的一个综合分析,旨在帮助读者更好地理解Oracle数据挖掘的相关知识点。 ### Oracle 9i Data Mining 概念 #### 版权声明与法律条款 文档开头首先明确指出这是Oracle Corporation的专有信息,并且...
理解Oracle数据类型对于数据库设计、开发和管理至关重要。以下是Oracle 10g中数据类型的详细讲解: 1. **数值类型** - `NUMBER(p,s)`: 最通用的数值类型,可以存储整数和小数,p代表总位数,s代表小数位数。 - `...
总结来说,Oracle提供了全面的JSON支持,包括数据类型、函数、操作符和PL/SQL包,以及客户端工具的增强,使我们能够方便地在数据库中存储、查询和格式化查看JSON数据。无论你是开发人员还是数据库管理员,理解并掌握...
总之,Oracle的表类型和表变量是强大的工具,能够帮助开发人员更高效地管理数据和编写复杂逻辑。通过理解其概念和用法,你可以优化PL/SQL程序,提高性能,并简化代码结构。对于需要处理大量数据的业务场景,熟练掌握...