Oracle-33-变量%type、变量%rowtype、记录类型、记录表类型
来源:互联网 发布:linux系统解压缩文件 编辑:程序博客网 时间:2024/04/30 17:06
一、%type变量
当用户事先并不知道检索的数据列的数据类型,可以使用%type定义变量。
比如:SQL>id emp.empno%type 就是将emp表中empno列的数据类型为变量id的数据类型。
例1:练习%type定义未知类型的变量。
解:用student表做:
二、%rowtype变量
%rowtype变量一次可以存储一行数据。
例2:练习%rowtype变量。
解:注意下图中的程序:
三、复合类型变量(存储多行数据,可以理解为数组)
1.复合变量
与标量变量对应的就是复合变量。
2.复合变量分为以下两种类型
(1)记录类型
记录类型复合变量中可以存储多个标量值,结构与行相似;可以存储由多个列值组成的一行数据。
语法格式:
type 变量名 is record(
…………………………
…………………………
…………………………
);省略号部分是需要存储的数据
比如以下程序:
declare
type emp_record is record(
id emp.empno%type,
name emp.empno%type
);
a emp_record;——定义变量a,类型record,这里有人理解为给emp_record取别名(这有待斟酌)。
begin
select empno,ename into a from emp where empno = 7935;
dbms_output.put_line(a.id);
dbms_output.put_line(a.name);
end;
【注意】type变量名 is record之后括号内的代码,与create table一样,除最后一行以外每行逗号结尾,最后一行末尾不要任何标点符号,最后一行输入完毕,回车,打上左括号、分号,回车结束。标点必须这么做,否则报错。
例3:练习记录类型复合变量。
解:注意下图中的程序:
(2)记录表类型
该变量类型允许用户在代码中使用“表”,以便存储多个行数据。记录表类型是对记录类型的扩展,可以处理多个记录或多行数据
为什么使用记录表类型
答:因为一个记录类型变量只可以存储查询语句返回的一行数据,这就限制了select语句只能返回一行。如果select语句返回多行数据,那么就可以使用记录表类型。所以记录表类型它可以处理或是存储返回的多行数据。
语法格式:
type table_name is table of data_type [not null] index by binary_integer;
其中index by binary_integer是该记录表的下标数据类型(类似于数组下标)或称为记录表的长度,table_name是定义记录表名,data_type是定义记录表类型中存储数据的类型。
比如如下程序:
declare
type table_a is table of varchar2(20) index by binary_integer;
a table_a;
begin
a(1) := ‘第一个变量值’;
a(2) := ‘第二个变量值’;
dbms_output.put_line(a(1));
dbms_output.put_line(a(2));
end;
例4:练习记录表类型的复合变量
解:注意下图中的程序:
记录表类型存储值的方式
有一个索引来标识这一行记录,图解如下:
【注意】
(1)索引从1开始,而不是从0开始;
记录表提供的方法几种:
(1)count:返回记录表中记录的数量;
(2)delete:删除记录表中的记录,比如a.delete(2)是删除记录表中的第二个值;
(3)first:返回记录表中最小索引值;
(4)last:返回记录表中最大的索引值;
(5)next:返回记录表变量中的下一个索引,当使用该方法的时候,需要传递一个索引值。
例5:练习以上记录表提供的方法。
解:注意下图中的程序:
由此可见,t.delete(2)删除记录表中第二个数据后,记录表总长度不变,原来是5,现在还是5,且后面记录不会前进一个,即原来t(4)是d,现在还是d。
- Oracle-33-变量%type、变量%rowtype、记录类型、记录表类型
- Oracle 中使用的%TYPE和%ROWTYPE类型的变量和复合变量
- %type匹配字段类型;%rowtype匹配记录类型
- Oracle 记录类型和%TYPE
- 利用记录类型变量更新记录
- Oracle pl/sql编程 7---复合变量之记录类型
- oracle中的特殊类型:%type、record、%rowtype
- rowtype类型变量可直接赋值
- oracle 表行变量 %ROWTYPE 变量使用
- DayDayUP_Python自学记录[2]_Python变量类型
- Oracle pl/sql编程 8---复合变量之记录表类型
- Oracle开发专题之:%TYPE 和 %ROWTYPE 自定义结构类型
- oracle 复合变量 记录
- sql/plus复合变量之记录复合类型和索引表类型
- Oracle 记录类型介绍
- Oracle 记录类型介绍
- PLSQL:oracle记录类型
- Oracle存储过程-使用记录类型注意的问题[%type]
- Centos 6.5 编译安装Nginx+php+Mysql
- 获取路径的最后一个文件名lastPathComponent
- 二叉树的中序遍历
- C++中STL库中的assign函数
- 沉浸式状态栏Immersive Mode & 透明式状态栏Translucent Bars
- Oracle-33-变量%type、变量%rowtype、记录类型、记录表类型
- 获取文件的属性,时间等等
- 线性表之顺序存储结构
- Codeforces Round #308 (Div. 2) D. Vanya and Triangles (判断三角形数量)
- 监听NSBlockOPeration执行完毕
- 复习redis(二)
- 删除NSOperationQueue内所有Operation
- 每天laravel-20160716|OutputStyle
- mysql 添加列,修改列,删除列。