转载于:http://www.itxuexiwang.com/a/shujukujishu/oracle/2016/0216/89.html?1455872314
使用记录类型变量只能保存一行数据,这限制了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;
//
例三:与游标结合使用#p#分页标题#e#
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表类型表变量使用.sql`文件中,很可能是包含了创建表类型、声明表变量和执行相关操作的示例代码。你可以通过运行这个脚本来实践表类型和表变量的使用。在实际操作中,可能包含如下内容: 1. 定义一...
### Java中Oracle操作绑定变量使用用户工具模块解决方案 #### 一、背景介绍 在Java开发过程中,特别是与Oracle数据库交互的应用场景中,SQL语句的编写及执行效率一直是开发者关注的重点之一。为了提高SQL语句的...
在Oracle数据库中,记录类型变量(Record Type Variables)是一种非常有用的特性,允许我们创建自定义的数据结构来存储和操作多列数据。以下是对记录类型变量的详细解释: 1. **Oracle记录类型变量**:记录类型变量...
本篇将深入讲解Oracle脚本中的变量使用,通过实例来帮助你更好地理解和应用。 1. **变量声明** 在Oracle中,变量在PL/SQL块内进行声明。基本格式如下: ```sql DECLARE variable_name datatype; -- 或 variable_...
- **`ORACLE_TERM`**: 设置终端类型。 - **`ORA_ASM_HOME`**: 指定ASM软件的安装目录。 - **`ORA_CRS_HOME`**: 指定Oracle Cluster Ready Services的安装目录。 - **`AGENT_HOME`**: 指定Oracle Agent的安装目录。 -...
例如,定义一个名为`num`的NUMBER类型变量: ```sql DECLARE num NUMBER; BEGIN num := 100; -- 赋值操作 END; ``` 二、PL/SQL变量的分类 1. 局部变量:在BEGIN和END之间的声明的变量,仅在声明它们的块中可见...
在Oracle数据库管理中,变量的使用是一项基本且重要的技能。通过合理的变量定义与使用,可以极大提升SQL脚本的灵活性与可维护性。本文将围绕Oracle中的变量定义、类型以及如何在实际操作中进行有效利用等方面进行...
### Oracle BIEE 变量总结与应用 #### 一、引言 Oracle Business Intelligence Enterprise Edition (BIEE) 是一款强大的商业智能工具,能够帮助组织机构从数据中提取价值并做出更好的决策。在 BIEE 的开发过程中,...
总结起来,在Java中实现Oracle变量绑定的关键在于使用PreparedStatement,并通过其提供的`setXXX()`方法设置参数。这样做不仅可以提升SQL执行效率,降低数据库负载,还能提高代码质量和安全性。因此,在开发过程中应...
### Oracle SQL Developer 使用教程 #### 一、Oracle Database Home Page 的使用 在开始介绍 Oracle SQL Developer 的使用之前,我们先来看看如何使用 Oracle Database Home Page。这部分内容非常重要,因为它是...
### Oracle的表结构转成MySQL的表结构 #### 功能概述 本文介绍了一种将Oracle数据库中的表结构转换为MySQL数据库表结构的方法。通过编写一个PL/SQL函数`fnc_table_to_mysql`来实现这一目标。该函数可以接受四个参数...
通过这个实验,你不仅会理解Oracle自定义数据结构和表类型的使用方法,还能体会到它们在优化数据存储和提高代码可读性方面的价值。这对于任何从事Oracle数据库开发和管理的人来说都是宝贵的技能。
Oracle 多表查询优化需要考虑多个方面,包括选择合适的表名顺序、使用 Cache Buffer、语句共享、优化查询路径、避免多表连接查询、优化数据统计、选择合适的索引、优化数据库结构、使用 Materialized View、优化...
- **绑定变量的优化问题**:在某些情况下,Oracle的优化器可能无法准确地估计使用绑定变量的SQL语句的执行成本,可能导致执行计划不佳。这时可以通过绑定变量提示(bind peeking)或重写SQL语句来解决。 - **避免...
例如,当一个数字与字符串进行比较时,Oracle会尝试将字符串转换为数字,或者在存储过程中,如果参数的数据类型与变量不匹配,Oracle会尝试自动转换。 2. **显示转换**:另一种转换方式是通过显式使用CAST或TO_CHAR...
1. **安装步骤**:指导用户如何下载并安装该工具,可能需要设置环境变量,确保与Oracle客户端兼容。 2. **连接配置**:介绍如何配置数据库连接参数,如主机名、端口号、服务名、用户名和密码。 3. **功能说明**:...
cx_Oracle模块通过使用Oracle客户端库来实现与Oracle数据库的交互。它被分发在一个开源许可证,即Python软件基金会许可证(PSF license)之下。 cx_Oracle模块提供了一系列数据库操作功能,例如执行SQL查询、存储...
在Oracle的PL/SQL编程中,变量和复合类型的使用是至关重要的。首先,我们要了解变量的基本概念。变量是用来存储数据的容器,在PL/SQL中,我们可以定义不同类型的变量,包括标量类型、复合类型和参照类型等。 标量...
在Oracle数据库管理中,SQL*Plus是一个非常重要的交互式命令行工具,用于执行SQL语句和PL/SQL...熟练掌握`set`命令的使用,能极大地提高在Oracle数据库操作中的效率和便捷性,尤其是在处理大量数据和编写自动化脚本时。
Oracle复合类型之RECORD的深入浅出 Oracle复合类型之RECORD是Oracle...RECORD类型是Oracle数据库中的一种强大和灵活的复合类型,需要具备基本的Oracle数据库知识和实际应用经验,以便于正确地使用和应用RECORD类型。