-
1. 使用%TYPE
在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据。在这种情况下,变量应该拥有与表列相同的类型。例如,students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量:
DECLARE
v_FirstName VARCHAR2(20);
但是如果first_name列的定义改变了会发生什么(比如说表改变了,first_name现在的类型变为VARCHAR2(25))?那就会导致所有使用这个列的PL/SQL代码都必须进行修改。如果你有很多的PL/SQL代码,这种处理可能是十分耗时和容易出错的。
这时,你可以使用”%TYPE”属性而不是将变量类型硬性编码。
例如:
DECLARE
v_FirstName students.first_name%TYPE;
通过使用%TYPE,v_FirstName变量将同students表的first_name列的类型相同(可以理解为将两者邦定起来)。
每次匿名块或命名块运行该语句块以及编译存储对象(过程、函数、包、对象类和触发器)时,就会确定该类型。
使用%TYPE是非常好的编程风格,因为它使得PL/SQL更加灵活,更加适应于对数据库定义的更新。
2. 使用%ROWTYPE
2.1 PL/SQL记录
PL/SQL记录类型类似于C语言中的结构,是一种复合类型,是用户自定义的。
记录提供了一种处理独立的但又作为一个整体单元相关的变量的机制。请看:
DECLARE
v_StudentID NUMBER(5);
v_FirstName VARCHAR2(20);
v_LastName VARCHAR2(20);
这3个变量在逻辑上是相互关联的,因为他们指向students表中不同的字段。如果为这些变量声明一个记录类型,那么他们之间的关系就十分明显,可作为一个单元进行处理。
DECLARE
/*Define a record type to hold common student informationi*/
TYPE t_StudentRecord IS RECORD(
StudentID NUMBER(5),
FirstName VARCHAR2(20),
LastName VARCHAR2(20);
/*Declare a variable of this type.*/
v_StudentInfo t_StudentRecord;
2.2 记录赋值
可以用SELECT语句向记录赋值,这将会从数据库中检索数据并将该数据存储到记录中。注意的是,记录中字段应该和查询结果列表中的字段相匹配。
SELECT studentID,firstName,lastName
into v_StudentInfo
from students where studentID=32;
2.3 使用%ROWTYPE
在PL/SQL中将一个记录声明为具有相同类型的数据库行的作法是很常见的。PL/SQL提供了%ROWTYPE运算符,使得这样的操作更为方便。
例如:
DECLARE
v_StudentRecord students%ROWTYPE;
将定义一个记录,该记录中的字段将与students表中的列相对应
注:撰于CNBLOG
分享到:
相关推荐
Oracle复合类型之RECORD的深入浅出 Oracle复合类型之RECORD是Oracle...RECORD类型是Oracle数据库中的一种强大和灵活的复合类型,需要具备基本的Oracle数据库知识和实际应用经验,以便于正确地使用和应用RECORD类型。
本文介绍了Java调用Oracle存储过程返回结果集Record和Cursor的相关知识点,包括创建Type、PACKAGE和PROCEDURE,Java代码中调用存储过程,并获取结果集。这些知识点对深入了解Oracle存储过程和Java调用Oracle存储过程...
Oracle对象类型是Oracle数据库系统中面向对象编程的关键概念,它允许开发者定义自定义的数据结构,同时结合了数据和操作这些数据的方法。Oracle对象类型由两个主要部分构成:对象类型头和对象类型体。类型头定义了...
Oracle数据库还支持PL/SQL复合类型,如记录(Record)和表类型(Table),以及集合类型,如关联数组(Associative Array)。这些类型使得在数据库中进行复杂的逻辑操作变得更加灵活和高效。 在实际应用中,选择正确...
Oracle PL/SQL 中的 %TYPE 和 %ROWTYPE 应用详解 Oracle PL/SQL 是一种强大的编程语言,广泛应用于数据库开发中。在 PL/SQL 中,变量的声明和使用是非常重要的。其中,%TYPE 和 %ROWTYPE 是两个非常重要的概念,...
在Oracle数据库中,记录类型变量(Record Type Variables)是一种非常有用的特性,允许我们创建自定义的数据结构来存储和操作多列数据。以下是对记录类型变量的详细解释: 1. **Oracle记录类型变量**:记录类型变量...
- 对于`OUT`参数,我们使用`registerOutParameter`来指定参数的位置(通常从1开始计数)和类型。在本例中,`OracleTypes.CURSOR`用于表示返回的游标。 - 执行存储过程后,通过`execute`方法,我们可以获取到结果集...
3. **按类型删除**:根据查询结果,可以按对象类型逐个删除。表、视图、索引、存储过程等应分别处理。例如,删除表可以使用`DROP TABLE`语句: ```sql DROP TABLE table_name CASCADE CONSTRAINTS; ``` `CASCADE...
3. 创建一个记录类型 v_record,类型包含 v_name,v_salary,v_job,v_deptno 等分量,要求记录类型中各个分量的数据类型和 emp 表中 ename,sal,job,deptno 列的数据类型一致(%type 实现)。创建一个变量,变量...
在Oracle PL/SQL中,Records是一种非常有用的编程结构,它允许我们创建自定义的数据类型,类似于数据库表格中的行。Records由一组字段组成,每个字段都有自己的名称和数据类型。这种数据结构使得处理多个相关数据变...
其中`ARRAY_TYPE`是Oracle提供的数组类型。 ##### 2. **自定义数组类型** 自定义数组类型通常通过创建包(Package)来实现。例如: ```sql CREATE OR REPLACE PACKAGE myPackage IS TYPE info IS RECORD (name ...
5. **包(Packages)**:包是存储在数据库中的命名代码单元,包含一组相关的PL/SQL过程、函数、变量和类型。它们提供了一种管理代码的方式,并可以隐藏实现细节。例如,创建一个包: ```sql CREATE PACKAGE my_...
定义记录类型的语法是`type typename is record(列定义…..);`,然后声明记录变量`recordtype typename;`。你可以通过`.columnname`来引用记录中的字段并赋值。在示例中,我们创建了一个记录类型,用于存储学生表中...
- **支持的函数**: 包括数学函数、日期函数、字符函数和类型转换函数。 - **不支持的函数**: 组函数(如 COUNT, SUM 等)。 #### 七、PL/SQL 中的 SQL 语句 - **SELECT 语句**: 必须与 INTO 子句结合使用,且结果集...
Oracle 中有两种类型的循环语句:`FOR` 循环和 `WHILE` 循环。 (1) FOR 循环 `FOR` 循环可以用来遍历游标或数组。语法为:`FOR variable IN cursor LOOP ... END LOOP;` 例如,以下是一个使用 `FOR` 循环遍历游标...
9. `RECORD 类型`: PL/SQL中的记录类型允许创建自定义结构,可以包含多个字段,这里的`emp_record_type`就是这样的一个记录类型,包含`ename`、`salary`和`title`三个字段。可以将查询结果直接赋值给记录类型变量,...
另一类是只能在 PL/SQL 脚本中使用的数据类型,如 boolean、type、rowtype、record 等。 在 Oracle 中,变量可以分为标量变量和复合变量。标量变量只能保存一个值,如 char、type 等;复合变量可以保存多个值,如 ...
文档覆盖了Oracle 12c Release 2 (12.2)版本中PL/SQL包和类型的全面内容。 #### 重要性 在Oracle数据库中,PL/SQL(程序化SQL)是一种功能强大的编程语言,用于增强SQL的功能并提供过程控制结构。通过使用PL/SQL,开发...
声明记录需要定义记录类型,如`TYPE typename IS RECORD (列定义.…);`,然后声明记录实例,如`recordtype typename;`。引用记录的字段使用`recordname.columnname`,赋值则使用`recordname.columnname := ...
12. 控制文件中所有数据文件(DATAFILE),表空间(TABLESPACE),和重做日志(REDO LOG)所使用的记录情况:SELECT type, record_size, records_total, records_used FROM v$controlfile_record_section; 该命令用于获取...