- 浏览: 128625 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (165)
- 数据库 (45)
- 架构 (0)
- java web前端+框架 (9)
- java web后端+框架 (56)
- Eclipse插件 (1)
- 解题思路 (2)
- Eclipse (2)
- linux (6)
- jquery (4)
- 正则 (3)
- jsp (1)
- javascript (8)
- oracle (39)
- 生活 (1)
- weblogic (5)
- tomcat (3)
- Jrebel (1)
- powerdesigner (1)
- svn (1)
- log4j (1)
- IDE (1)
- POI (2)
- jvm (2)
- ssh (1)
- http (1)
- notepad++ (2)
- 润乾 (1)
- 设计模式 (0)
- 实用类Utils (2)
- 算法 (1)
- xml (1)
- 实用类 (2)
最新评论
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; 这种赋值方法是错的,赋值需要使用下标,如上面的的例子。
使用记录类型变量只能保存一行数据,这限制了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 sql替换指定范围的字符串
2015-06-18 17:49 1071--oracle替换指定范围的字符串(范围4-6) selec ... -
oracle字符集修改 中文乱码
2015-03-30 15:06 939sqlplus / as sysdba;//操作系统用户认证模 ... -
oracle表关联层级树查询
2015-03-20 17:27 620select level ,lpad(' ', ( ... -
转:oracle层次查询 树查询 (详细)
2015-03-20 15:03 862oracle层次查询 转自:http://www.2cto. ... -
ORACLE表空间管理维护
2015-01-22 11:34 437http://www.cnblogs.com/kerrycod ... -
自写函数用于替换wm_concat函数.zip
2015-01-19 16:25 1211-- wm_concat出现在oracle10g版本中,不仅是 ... -
禁用启用所有外键约束.tst
2015-01-12 11:05 586禁用所有外键约束.tst declare cursor c ... -
oracle查询生成列别名
2015-01-06 15:00 433select ',' ,col.COLUMN_NA ... -
linux下重启oracle
2015-01-05 15:44 532oracle/oracle连接ssh后 登录数据库 ... -
oracle删除重复记录
2014-08-22 15:49 354delete from cred_account ca1 w ... -
oracle获取过程的错误异常代码,错误,异常栈信息
2014-08-22 15:19 317得到oracle异常行号,代码,异常栈信息 Sql代码 d ... -
数据库导入导出dump.txt
2014-07-28 10:26 449数据库导入导出dump -
oracle表空间管理
2014-04-24 11:15 716--查看修改ORACLE表空间 --1、查看所有表空间信息 s ... -
连接到sqlplus
2014-04-17 11:25 454root/passwd su - oracle sqlplus ... -
0001-Oracle-系统-视图
2014-03-29 09:59 457--oracle树查询 select * from FUNC ... -
ORACLE查看并修改最大连接数
2014-03-26 13:52 554ORACLE查看并修改最大连接数 第一步,在cmd命令行,输入 ... -
oracle系统视图
2014-03-26 09:29 423--oracle树查询 select * from FUNC ... -
Oracle批量杀死锁.tst
2014-03-03 16:45 468declare cursor mycur is s ... -
Oracle批量杀死锁.sql
2014-03-03 16:43 487declare cursor mycur is s ... -
oracle查看表空间使用情况
2013-12-11 15:19 874select b.file_name 物理文件名 ...
相关推荐
在提供的`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 的开发过程中,...
例如,如果你有一个包含JSON对象的CLOB字段,你可以使用JSON_TYPE来检查特定键的类型,这在解析和验证数据时非常有用。 2. JSON_VALUE和JSON_QUERY: 这两个函数是提取JSON数据的核心工具。JSON_VALUE用于获取单个...
总结起来,在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数据库操作中的效率和便捷性,尤其是在处理大量数据和编写自动化脚本时。