`

oracle 表类型变量的使用

阅读更多
oracle 表类型变量的使用
使用记录类型变量只能保存一行数据,这限制了SELECT语句的返回行数,如果SELECT语句返回多行就会错。Oracle提供了另外一种自定义类型,也就是表类型,它是对记录类型的扩展,允许处理多行数据,类似于表。
创建表类型的语法如下:
TYPE table_name IS TABLE OF data_type [ NOT NULL ]
INDEX BY BINARY_INTEGER ;
语法说明如下:
--table_name  创建的表类型名称。
--IS TABLE  表示创建的是表类型。
--data_type  可以是任何合法的PL/SQL数据类型,例如varchar2。
--INDEX BY BINARY_INTEGER  指定系统创建一个主键索引,用于引用表类型变量中的特定行。
使用表类型的例子:
例一:直接对表类型变量赋值
declare
type my_emp is table of scott.emp%rowtype
index by binary_integer;
new_emp my_emp;
begin
new_emp(1).empno:=6800;
new_emp(1).ename:='tracy';
new_emp(1).job:='clerk';
new_emp(1).sal:=2500;
new_emp(2).empno:=6900;
new_emp(2).ename:='luck';
new_emp(2).job:='manager';
new_emp(2).sal:=4000;
dbms_output.put_line(new_emp(1).empno ||','||new_emp(1).ename||','||new_emp(1).job||
','||new_emp(1).sal);
dbms_output.put_line(new_emp(2).empno ||','||new_emp(2).ename||','||new_emp(2).job||
','||new_emp(2).sal);
end;
/
例二:使用表类型变量的方法:变量名.方法名[索引号]
declare
type my_emp is table of scott.emp%rowtype
index by binary_integer;
new_emp my_emp;
begin
new_emp(1).empno:=6800;
new_emp(1).ename:='tracy';
new_emp(1).job:='clerk';
new_emp(1).sal:=2500;
new_emp(2).empno:=6900;
new_emp(2).ename:='luck';
new_emp(2).job:='manager';
new_emp(2).sal:=4000;
dbms_output.put_line(new_emp.first||','||new_emp.count||','||new_emp.last);
dbms_output.put_line(new_emp(1).empno ||','||new_emp(1).ename||','||new_emp(1).job||
','||new_emp(1).sal);
dbms_output.put_line(new_emp(2).empno ||','||new_emp(2).ename||','||new_emp(2).job||
','||new_emp(2).sal);
--new_emp.delete(1);
dbms_output.put_line(new_emp.next(1));
end;
//
例三:与游标结合使用
declare
type my_emp is table of scott.emp%rowtype
index by binary_integer;
new_emp my_emp;
v_num number:=0;
cursor cur_emp is select empno,ename,job,sal from scott.emp;
begin
for v_emp in cur_emp loop
v_num:=v_num+1;
select * into new_emp(v_num) from scott.emp
where ename=v_emp.ename;
end loop;
for i in 1..new_emp.count loop
dbms_output.put_line(new_emp(i).empno ||','||new_emp(i).ename||','||new_emp(i).job||
','||new_emp(i).sal);
end loop;
end;
/
注意:不能直接对表变量赋值:select * into new_emp from scott.emp where deptno=30; 这种赋值方法是错的,赋值需要使用下标,如上面的的例子。
分享到:
评论

相关推荐

    Oracle表类型表变量使用

    NULL 博文链接:https://vernonchen163.iteye.com/blog/1902977

    Oracle记录类型变量[归类].pdf

    Oracle记录类型变量[归类].pdf

    定义并使用变量,复合类型

    学习oracle定义并使用变量,复合类型

    Oracle实用教程_04章_Oracle数据类型和函数[整理].pdf

    在 Oracle 数据库中,创建数据表时我们必须根据其所存储信息的特性定义表中所有字段的数据类型。Oracle 数据库支持多种不同的数据类型,甚至允许用户自定义类型,但最常用的还是其基本数据类型。 Oracle 数据类型...

    Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据

    例如,我们可以声明 id_type、phone_type、remark_type 等集合类型变量,以便存储 sr_contacts 表中的 sr_contact_id、contact_phone、remark 字段。然后,我们可以使用 fetch bulk collect into 语句将数据批量取出...

    21天学通Oracle

    第13章 Oracle数据类型(教学视频:21分钟) 231 第14章 Oracle中的函数与表达式(教学视频:111分钟) 240 第15章 Oracle中的控制语句(教学视频:16分钟) 282 第16章 SQL查询(教学视频:55分钟) 290 第17章...

    oracle实用教程-韩顺平

    韩顺平老师 oracle 教程笔记 1.Oracle 认证,与其它数据库比较,安装 ...18.定义并使用变量,复合类型 19.pl/sql 的进阶--控制结构(分支,循环,控制) 20.PL/SQL 分页 21.例外处理 22.oracle 的视图

    深入ORACLE变量的定义与使用的详解

    在编写PL/SQL程序时,可以使用标量(Scalar)类型、复合(Composite)类型、参照(Reference)类型和LOB(LargeObject)类型等四种类型。在PL/SQL中用的最多的就是标量变量,当定义标量变量时,必须要指定标题数据...

    Oracle 从入门到精通视频教程(11G版本)(ppt)

    PL/SQL 变量的使用 表达式 PL/SQL结构控制 PL/SQL中使用DML和DDL语言 PL/SQL中的异常 PL/SQL函数编写 第8章-游标,数据的缓存区 什么是游标 显示游标 隐式游标 第9章-视图,数据库中虚拟的表 什么是...

    Oracle数据库学习指南

    25. 安装Oracle后,经常使用的修改表空间的SQL代码 26. 比较SQL Server与Oracle、DB2 27. 多个数据库时,如何设置默认数据库 28. 各种数据类型的比较 29. 漫谈oracle中的空值 30. 没有备份、只有归档日志,如何...

    oracle10g教程从入门到精通.doc

    四:oracle表的管理(数据类型,表创建删除,数据CRUD操作) 9 oracle支持的数据类型 10 字符类 10 数字型 10 日期类型 10 建表 10 修改表 11 删除表 11 添加数据 11 修改数据 12 删除数据 12 savepoint a; --创建保存...

    Oracle11g从入门到精通2

    5.2.6 使用绑定变量 5.2.7 跟踪语句 5.3 设置SQL*Plus环境 5.3.1 SHOW命令 5.3.2 SET命令 5.4 SQL*Plus环境介绍 5.4.1 存储SQL*Plus环境 5.4.2 假脱机输出 5.4.3 联机帮助 5.5 使用SQL*Plus格式化...

    oracle10g课堂练习I(1)

    指定表中的数据类型 7-8 创建和修改表 7-11 了解数据完整性 7-13 定义约束条件 7-15 违反约束条件 7-16 约束条件状态 7-17 约束条件检查 7-19 使用 SQL 创建约束条件:示例 7-20 查看表中的列 7-21 查看表...

    Oracle数据库管理员技术指南

    8.3.3 使用多个 TEMP 表空间分布排序 8.4 优化数据存储的技术 8.4.1 使行链接和行迁移最小化 8.4.2 检测行链接/迁移 8.4.3 确定模式中的链接行 8.4.4 防止和纠正行链接/迁移 8.4.5 行链接/迁移的技巧 8.4.6 ...

    .net C# ORACLE带表参数存储过程

    因为.net中的除string类的数据类型外,其它类型要求手动修改UDT自动生成的类文件,本人测试了2天后,才明白要修改UDT自动生成的类文件,此功能特好用,尤其是象财务凭证中子栏的一次更新,要求一次将整张凭证更新到ORACLE,...

    Oracle PL/SQL中如何使用%TYPE和%ROWTYPE

    通过使用 %TYPE,v_FirstName 变量将同 students 表的 first_name 列的类型相同(可以理解为将两者邦定起来)。每次匿名块或命名块运行该语句块以及编译存储对象(过程、函数、包、对象类和触发器)时,就会确定该...

    oracle存储过程的基本用法

    结合实例,介绍了oracle存储过程的用法,包括定义,变量类型,游标,流程分支语句的使用

    Oracle DBA workshop1 (中文版)

    指定表中的数据类型7-8 创建和修改表7-11 了解数据完整性7-13 定义约束条件7-15 违反约束条件7-16 约束条件状态7-17 约束条件检查7-19 使用SQL 创建约束条件:示例7-20 查看表中的列7-21 查看表的内容7-22 表操作7-...

Global site tag (gtag.js) - Google Analytics