复合变量
复合变量可以将不同的数据类型的多个值存储在一个单元中.由于复合数据类型可以有用户根据需要定义其结构,所以复合数据类型也称为自定义数据类型。
PL/SQL提供了两种类型的复合数据类型:
记录类型
在记录类型中可以存储多个标量值,与数据库中的行相似
记录表类型
允许用户在程序代码中使用”表”,以便存储多个行的数据。它只在程序运行期间有效。类似于程序代码中集合|数组。
记录类型:
必须使用TYPE语句定义记录类型的语法声明如下:
TYPE record_name is record(
Field_name data_type[not null, :=default value]
………
);
与%Rowtype不同之处是
1、%rowtype查询的是全部数据
2、记录类型必须使用type语法格式声明
//案例
SQL> declare
2 type empinfo is record( //声明一个记录类型
3 empno number(4),
4 ename varchar2(10),
5 job varchar2(9)
6 );
7
8 emp_data empinfo; //声明一个记录类型的变量
9 begin
10 select empno,ename,job into emp_data from emp where empno=7369; //查询的结果赋值给定义的变量
11 dbms_output.put_line(emp_data.empno||'/'||emp_data.ename||'/'||emp_data.job);
12 end;
13 /
记录表类型
它可以处理多个记录或多个行记录。
为什么使用记录表类型呢?
因为我们查询的数据的往往需要返回多行记录,所以需要记录表类型。
定义记录表类型
TYPE table_name is table of data_type[not null]
Index by binary_integer;//主键的索引
declare
type table_emp is table of emp%rowtype //创建一个表 此表的类型与emp表的类型一致
index by binary_integer;
type table_text is table of varchar2(20) //创建一个表 此表具有一个varchar2列的简单表
index by binary_integer;
empt table_emp; //声明记录表类型的变量
tabtext table_text;
begin
案例:
SQL> declare
2 type table_emp is table of emp%rowtype
3 index by binary_integer;
4 empt table_emp;
5 begin
6 empt(1).ename:='wangyi';
7 dbms_output.put_line(empt(1).ename);
8 end;
9 /
//返回总记录
SQL> declare
2 type table_emp is table of emp%rowtype
3 index by binary_integer;
4 empt table_emp;
5 begin
6 dbms_output.put_line(empt.count);
7 end;
8 /
0 //没有记录
//删除的操作
表名.Delete(记录数);
//检索记录变量
First:获取第一个的索引
Next:下一个的索引 但是必须有参数
Last:最后一个的索引
SQL> declare
2 type table_emp is table of emp%rowtype
3 index by binary_integer;
4 empt table_emp;
5 i number(2):=1;
6 begin
7 while i<10
8 loop
9 empt(i).ename:='wangyi';
10 i:=i+1;
11 end loop;
12
13 dbms_output.put_line(empt.count);
14
15 empt.delete(2);
16
17 dbms_output.put_line(empt.count);
18
19 dbms_output.put_line(empt.first);
20 dbms_output.put_line(empt.next(2));
21 dbms_output.put_line(empt.last);
22 end;
23 /
9
8
1
3
9
分享到:
相关推荐
本篇文章将深入探讨Oracle查询优化的一些改写技巧,并结合实际案例进行讲解。 一、索引的合理利用 1. 唯一性索引:为经常用作查询条件的列创建唯一性索引,可以确保查询时快速定位到单条记录,例如主键和唯一约束...
以下是一些关于Oracle查询优化改写的技巧和案例分析: 1. **使用索引**:索引是提高查询速度的关键。选择正确的索引类型(如B树、位图或函数索引)和创建策略,可以显著提升查询性能。例如,对于经常在WHERE子句中...
- **复合变量(composite)**:如数组、记录等复合数据类型。 ### PL/SQL的进阶——控制结构(分支,循环,控制) 这部分讲解了PL/SQL中的控制结构,包括条件分支、循环等。 - **条件分支语句**:IF、CASE等。 - **...
9. **高级特性**:如PL/SQL记录类型、复合类型、游标变量、异步处理、PL/SQL表和集合等。 10. **实际应用案例**:包含实际数据库项目中的PL/SQL应用,如数据迁移、报表生成、业务逻辑处理等。 通过深入学习和实践...
- **系统需求**:Oracle OLAP 对硬件和软件环境有一定的要求,例如操作系统版本、内存大小、处理器类型等。 - **安装过程**:安装 Oracle OLAP 通常包括数据库服务器的安装、OLAP 组件的添加以及必要的配置步骤。 - ...
从就业与择业的角度来讲,计算机相关专业的大学生从事oracle方面的技术是职业发展中的最佳选择。 其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的...
此外,书中还讨论了PL/SQL与Oracle数据库的交互,如如何调用数据库的内置函数、操作表和索引、以及事务管理。了解这些内容,读者将能够更好地设计和实现高效的数据访问逻辑。 在性能优化方面,书中会介绍如何编写...
案例中提到的建立测试包,可以包含一组相关的过程和变量,方便测试和管理。包还可以提供私有数据类型和公共接口,有助于模块化和封装代码。 通过这个案例,学习者可以逐步了解如何在Oracle环境中进行数据库设计、...
- **定义**: 复合类型允许开发者自定义记录类型,包含多个字段。 - **声明**: `DECLARE TYPE t_student IS RECORD (name students.name%TYPE, age students.age%TYPE);` - **示例**: ```sql DECLARE TYPE t_...
- **案例1:大表查询优化**:通过添加复合索引和分区表的方式显著提高了查询性能。 - **案例2:高并发事务处理**:利用事务隔离级别和锁定机制有效避免了死锁现象。 ##### 4.2 最佳实践 - **定期检查索引效率**:...
此外,书中还介绍了PL/SQL中的各种数据类型,如数字类型、字符类型、日期时间类型以及复合类型,如数组和记录,帮助读者理解如何在PL/SQL中存储和操作不同类型的数据。 #### 2. 存储过程与函数 存储过程和函数是PL...
《Oracle从入门到精通》是一本旨在帮助初学者和进阶者掌握Oracle数据库系统的书籍,其配套代码提供了实践操作的机会,使理论与实践相结合,更好地理解Oracle的强大功能和使用技巧。Oracle是全球广泛使用的数据库管理...
- **数据类型**: 包括基本数据类型如NUMBER、VARCHAR2,以及复合数据类型如RECORD。 - **语法结构**: 包括变量声明、控制结构(如IF、LOOP)等。 #### 七、PL/SQL 函数、过程、包 - **函数**: 用于执行计算并返回单个...
- **scott用户**:介绍scott用户在Oracle中的默认表结构,包括`EMP`, `DEPT`, `SALGRADE`等表的字段和用途。 - **表结构分析**:详细解析每个表的字段含义及其相互之间的关联关系。 - **示例查询**:给出基于scott...
Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与结构化编程语言的灵活性结合在一起,主要用于在Oracle数据库环境中创建复杂的业务逻辑和数据处理程序。这个“Oracle PL SQL实例精讲(中英文版)”...
通过阅读"Oracle学习笔记 - - JavaEye技术网站.mht"文件,你可以深入学习到上述这些知识点,并结合实际案例进行练习,逐步成为一名熟练的Oracle数据库开发者或管理员。记住,理论知识与实践操作相结合,才能真正掌握...
在§2.4中,我们学习了PL/SQL的变量类型,包括基本类型(如NUMBER、VARCHAR2等)、复合类型(如记录类型、数组类型)、%ROWTYPE(用于创建与表列结构对应的变量)以及LOB(Large Object)类型,后者用于存储大量非...
3. **表空间与数据文件**:在Oracle中,数据存储在表空间中,表空间由一个或多个数据文件组成。管理表空间可以解决磁盘空间不足或优化I/O性能的问题。 4. **索引**:索引是提高查询速度的关键,Oracle支持B树、位图...