- 浏览: 1523010 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
一、定义标题变量
当编写PL/SQL程序时,如果要引用标量变量,必须首先在定义部分定义标量变量,然后才能在执行部分或例外处里部分中使用这些标量变量。
(1)语法
在PL/SQ块中定义变量和常量的语法如下:
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr]
identifier:用于指定变量或常量的名称
CONSTANT:用于指定常量。当定义常量时,必须指定它的初始值,并且其数值不能改变。
datatype:用于指定变量或常量的数据类型。
NOT NULL:用于强制初始化变量(不能为NULL)。当指定NOT NULL选项时,必须要为变量提供数值。
:=:用于为变量和常量指定初始值。
DEFAULT:用于为变量和常量指定初始值。
expr:用于指定初始值的PL/SQL表达式,可以是文本值、其他变量、函数等。
(2)定义标题变量示例
v_ename varchar2(10);
v_sal number(6,2);
v_balance binary_float; -- oracle 10g新数据类型
c_tax_rate constant number(3,2):=5.5;
v_hiredate date;
v_valid boolean not null default false;
(3)使用标量变量
当在定义部分定义了标量变量之后,在执行部分和例外处理分部分可以引用这些标量变量。需要注意,在PL/SQL块中为变量赋值不同于其他编程语言,必须要在等号前加冒号(:=)。
declare v_ename varchar2(10); v_sal number(6,2); c_tax_rate constant number(3,2):=5.5; v_tax_sal number(6,2); begin select ename,sal into v_name,v_sal from emp where empno=&eno; v_tax_sal:=c_tax_rate*v_sal; dbms_output.put_line('雇员名:'|| v_name); dbms_output.put_line('雇员工资:'|| v_sal); dbms_output.put_line('所得税:'|| v_tax_sal); end; /
(4)使用%TYPE属性
当定义PL/SQL变量存放列值时,必须确保变量使用合适的数据类型长度,否则在运行过程中可能会出现PL/SQL运行错误。为了避免这种不必要的错误,可以使用%TYPE属性定义变量。当使用%TYPE属性定义变量时,它会按照数据库列或其他变量来确定新变量的类型和长度。
declare v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; c_tax_rate constant number(3,2):=5.5; v_tax_sal v_sal%TYPE; begin select ename,sal into v_name,v_sal from emp where empno=&eno; v_tax_sal:=c_tax_rate*v_sal; dbms_output.put_line('雇员名:'|| v_name); dbms_output.put_line('雇员工资:'|| v_sal); dbms_output.put_line('所得税:'|| v_tax_sal); end; /
二、复合变量
复合变量是指用于存放多个值的变量。当定义复合变量时,必须要使用PL/SQL的复合数据类型。PL/SQL包括PL/SQL记录、PL/SQL表、嵌套表以及VARRAY等4种复合数据类型。
(1)PL/SQL记录
PL/SQL记录类似于高级语言中的结构,每个PL/SQL记录一般都包含多个成员。当使用PL/SQL记录时,首先需要在定义部分记录类型和记录变量,然后在执行部分引用该记录变量。需要注意,当引用记录成员时,必须要加记录变量作为前缀(记录变量.记录成员)。
示例如下:
declare TYPE emp_record_type is RECORD ( name emp.ename%TYPE, salary emp.sal%TYPE, tital emp.job%TYPE ); emp_record emp_record_type; -- 声明变量时,变量在前,类型在后。 begin select ename,sal,job into emp_record from emp where empno=&empno; dbms_output.put_line('雇员名:'|| emp_record.name); end; /
emp_record_type是PL/SQL的记录类型,并且该PL/SQL记录类型包含了三个成员(name,salary,title);emp_record是记录的变量;emp_record.name则表示引用记录变量emp_record的成员name。
(2)PL/SQL表
PL/SQL表类似于高级语言中的数组。需要注意,PL/SQL表与高级语言的数组有所区别,高级语言数组的下标不能为负,但PL/SQL表的下标可以为负值;高级语言数组的元素个数有限制,而PL/SQL表的元素个数没有限制,并且其下标没有上限。当用不用PL/SQL表时,必须首先在定义部分定义PL/SQL表类型和PL/SQL表变量,然后在执行部分中引用该PL/SQL表变量。
示例如下:
declare TYPE ename_table_type is TABLE OF emp.ename%TYPE INDEX BY BINARY_INTEGER; ename_table ename_table_type; begin select ename into ename_table(-1) from emp where empno=&empno; dbms_output.put_line('雇员名:'||ename_table(-1)); end; /
ename_table_type为PL/SQL表类型;emp.ename%TYPE指定了PL/SQL表元素的数据类型和长度;ename_table为PL/SQL表变量,ename_table(-1)则表示下标为-1的元素。
(3)嵌套表
嵌套表(Nested Table)类似于高级语言中的数组。需要注意,高级语言数组和嵌套表的下标都不能为负值;高级语言的元素个数是有限制的,而嵌套表的元素个数是没有限制的。嵌套表和PL/SQL表非常类似,但嵌套表可以作为表列的数据类型,而PL/SQL表不能作为表列的数据类型。当在表列中使用嵌套表时,必须首先使用CREATE TYPE语句建立嵌套表类型。
示例如下:
CREATE OR REPLACE TYPE emp_type as OBJECT ( name varchar(10),salary number(6,2),hiredate date ); / CREATE OR REPLACE TYPE emp_array IS TABLE OF emp_type;
对象类型emp_type用于存储雇员信息,而emp_array是基于emp_type的嵌套表类型,它可以用于存储多个雇员的信息。当建立嵌套表类型之后,就可以在表列或对象属性中将其作为用户自定义数据类型来引用。但需要注意,当使用嵌套表类型作为表列时,必须要为其指定专门的存储表。
示例如下:
CREATE TABLE department ( deptno number(2), dname varchar(10), employee emp_array )NESTED TABLE employee STORE AS employee;
(4)VARRAY
VARRAY(变长数组)类似于嵌套表,它可以作为表列和对象类型属性的数据类型。但需要注意,嵌套表的元素个数没有限制,而VARRAY的元素个数是有限制的。当使用VARRAY时,必须首先建立 VARRAY类型。
示例如下:
CREATE OR REPLACE TYPE article_type as OBJECT ( title varchar2(30),pubdate date ); / CREATE OR REPLACE TYPE article_array IS VARRAY(20) OF article_type;
对象类型article_type用于存储文章信息,而article_array则用于存储多篇文章的信息,并且最多可以存储20篇文章。当建立了VARRAY类型之后,可以在或对象属性中将其作为用户自定义数据类型来引用。
示例如下:
CREATE TABLE department ( id number(6), name varchar2(10), article article_array );
注意,嵌套表列数据需要存储在专门的存储表中,而VARRAY数据则与其他列数据一起存放在表段中。
三、参照变量
参照变量是指用于存放数值指针的变量。通过使用参照变量,可以使得应用程序共享相同对象,从而降低占用空间。在编写PL/SQL程序时,可以使用游标变量(REF CURSOR)和对象类型变量 REF obj_type等两种参照变量类型。
(1)REF CURSOR
当使用显式游标时,需要在定义显式游标时指定相应的SELECT语言,这种显式游标称为静态游标。当使用游标变量时,在定义游标变量时不需要指定SELECT语句,而是在打开游标时指定SELECT语句,从而实现动态的游标操作。
示例如下:
declare TYPE c1 IS REF CURSOR; emp_cursor c1; v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; begin OPEN emp_cursor FOR SELECT ename,sal FROM emp WHERE deptno=&no; LOOP FETCH emp_cursor INTO v_ename,v_sal; EXIT WHEN emp_cursor%NOTFOUND; dbms_output.put_line(v_ename); END LOOP; CLOSE emp_cursor; end; /
c1为REF CURSOR类型,而emp_cursor为游标变量,并且在打开游标变量时指定了其所对应的SELECT语句。
(2)REF obj_type
当编写对象类型应用时,为了共享相同对象,可以使用REF引用对象类型,REF实际是指向对象实例的指针。下面通过示例说明如何使用REF。首先建议对象类型home和对象表homes,然后插入数据。
示例如下:
CREATE OR REPLACE TYPE home_type AS OBJECT ( street varchar2(50), city varchar2(20), state varchar2(10), zipcode varchar2(6), owner varchar2(10) ); / CREATE TABLE homes OF home_type; INSERT INTO homes VALUES('呼伦北路12号','呼和浩特','内蒙','010010','马鸣'); INSERT INTO homes VALUES('呼伦北路13号','呼和浩特','内蒙','010010','秦斌'); INSERT INTO homes VALUES('呼伦北路14号','呼和浩特','内蒙','010010','马武'); COMMIT;
对象表homes存放着家庭所在地以及户主姓名。假定每个家庭有四口人,当进行人口统计时,为了使得同一家庭的每个家庭成员可以共享家庭地址,可以使用REF引用home_type对象类型,从而降低占用空间。
示例如下:
CREATE TABLE person ( id number(6) primary key, name varchar2(10), address REF home_type ); INERT INTO person select 1,'马鸣',ref(p) FROM homes p where p.owner='马鸣'; INERT INTO person select 1,'马武',ref(p) FROM homes p where p.owner='马武'; INERT INTO person select 3,'秦斌',ref(p) FROM homes p where p.owner='秦斌';
当为person表插入数据时,address列将会存放指向homes表相应数据的地址指针。
四、LOB变量
LOB变量是指用于存储大批量数据的变量。Oracle将LOB分为两种:内部LOB和外部LOB。内部LOB包括CLOB、BLOB和NCLOB有一种类型,它们的数据被存储在数据库中,并且支持事务操作(提交、回退、保存点)。外部LOB只有BFILE一种类型,该类型的数据被存储在OS文件中,并且不支持事务操作。其中,CLOB/NCLOB用于存储大批量字符数据。BLOB用于存储大批量二进制数据。而BFILE则存储指向OS文件的指针。
五、非PL/SQL变量
当在SQL*PLUS或应用程序(例如Pro、C/C++)中与PL/SQL块之间进行数据交互时,需要使用SQL*PLUS变量或应用程序变量来完成。当在PL/SQL块中引用非PL/SQL变量时,必须要在非PL/SQL变量前加冒号(“:”)。
(1)使用SQL*PLUS变量
在PL/SQL块中引用SQL*PLUS变量时,必须首先使用VARIABLE命令定义变量;而如果要在SQL*PLUS中输出变量内容,则需要使用PRINT命令。
示例如下:
var name varchar2(10); begin select ename into :name from emp where empno=7788; end; / print name;
发表评论
-
oracle的split函数(转)
2014-03-14 00:06 2114--声明的长度要长点 create or replace ... -
使用Ubuntu的oracle问题
2012-09-26 21:50 7461、在oracle用户用使用dbca命令后出现No p ... -
oracle 多表删除 同时删除多表中关联数据
2012-09-19 16:30 5388DELETE from COMIC_ANIMATION_ENT ... -
面试时 遇到一个数据库SQL 成绩排名
2012-07-17 09:55 10301、累积排名 SELECT NAME ... -
ORA-12519: TNS:no appropriate service handler found 解决
2012-06-07 11:37 880转自:http://www.cnblogs.com/ungsh ... -
Oracle 删除外键约束 禁用约束 启用约束
2012-04-23 12:39 1109执行以下sql生成的语句即可 删除所有外键约束 selec ... -
pl/sql developer中关于TIMESTAMP显示格式的疑问和学习
2012-04-03 18:01 1961ORACLE中的TIMESTAMP数据类 ... -
Oracle 时间戳 触发器
2012-03-23 00:36 3599create table time_test( ... -
Oracle SQL 函数
2012-03-02 09:25 907NVL(expr1,expr2) 如 ... -
Oracle SQL 编码
2012-03-01 17:32 1785一、分隔符 (1) 单符号分隔符 ... -
Oracle SQL 学习
2012-02-29 14:57 888一、创建 存储过程 的方法: ... -
ubuntu 11.04 安装 oracle 10g Enterprise Edition 错误信息
2012-02-23 22:10 2616网上下了个zip版的 , ... -
SQL 分组统计 两个字段 行转列
2012-02-08 17:20 4148select c.MRL,c.OPERATION_ID,c. ... -
Oracle 触发器 创建
2012-02-07 09:42 1765在创建Oracle 触发器的时候需要注意一点,需要触发器的末尾 ... -
Oracle 去掉重复字符串
2011-06-02 16:29 4125砝码 create or replace function ... -
在Navicate中使用 提示输入 方式输入SQL的参数。
2011-03-01 17:56 972select [$输入A] 输入参考: sele ... -
高效删除Oracle数据库中重复数据的方法
2010-08-17 10:58 1142转自:http://www.builder.com.cn/20 ...
相关推荐
Oracle SQL语法是数据库管理员和开发人员在操作Oracle数据库时必须掌握的重要技能。下面将详细解释文档中提及的一些关键知识点。 一、排序显示 在Oracle SQL中,`ORDER BY`子句用于对查询结果进行排序。默认是升序...
Oracle SQL 是一种强大的数据库查询和编程语言,广泛用于管理和操作Oracle数据库系统。11g第二版(11G2)是Oracle的一个重要版本,提供了许多增强功能和优化。本官方文档集包括四份重要的参考资料,涵盖了Oracle SQL...
两个 SQL 语句中必须使用相同的名字的绑定变量(bind variables)。 三、选择最有效率的表名顺序 ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名,因此 FROM 子句中写在最后的表(基础表 driving ...
在Linux系统中,Oracle数据库的运行依赖于一系列的环境变量设置和自启动脚本的配置。这些要素确保了数据库服务的稳定性和可管理性。本文将深入探讨与"linux-oracle环境变量及自启动脚本"相关的知识点。 一、Oracle...
### Oracle SQL Developer 使用教程 #### 一、Oracle Database Home Page 的使用 在开始介绍 Oracle SQL Developer 的使用之前,我们先来看看如何使用 Oracle Database Home Page。这部分内容非常重要,因为它是...
在Oracle数据库管理中,SQL调优是提升系统性能的关键环节。SQL_Tuning是Oracle官方提供的一个专题,旨在帮助管理员和开发人员优化SQL查询,从而提高数据库的效率和响应时间。以下是一些关于"Oracle SQL Tuning"的...
在IT领域,尤其是在数据库管理和系统自动化操作中,利用Linux下的Crontab实现Oracle SQL的定时自动执行是一项极为实用且高效的技术。本文将深入探讨如何在Linux环境下设置Crontab来定期执行Oracle SQL脚本,这一过程...
### Oracle SQL Developer数据库连接成功后无法打开表的问题分析与解决 #### 问题概述 在使用Oracle SQL Developer工具时,部分用户可能会遇到一个较为常见的问题:虽然已经成功连接到Oracle数据库,但是在左侧的...
在Java中实现Oracle变量的绑定方法,主要是为了优化SQL语句的执行效率,减少数据库解析负担,提升系统性能。Oracle数据库在处理SQL语句时,会先进行解析,然后将解析后的SQL语句存储在共享池(Shared Pool)中。如果...
4. **性能调优**:Oracle SQL的性能调优是DBA的必备技能,本书会讲解如何通过 Explain Plan 分析查询执行计划,使用绑定变量,以及调整SQL语句和数据库参数来提高性能。 5. **事务与并发控制**:在多用户环境中,...
Oracle SQL和PL/SQL是两种在Oracle数据库管理系统中广泛使用的编程语言,它们在数据库管理和开发领域扮演着核心角色。Oracle SQL是SQL标准的一个实现,主要用于查询、操作和管理Oracle数据库中的数据,而PL/SQL是一...
在Oracle中,变量在PL/SQL块内进行声明。基本格式如下: ```sql DECLARE variable_name datatype; -- 或 variable_name1 datatype1, variable_name2 datatype2; BEGIN ... END; ``` 例如,我们可以声明一个名为`...
Oracle使用命令行批量执行带参数及用户名是变量的SQL文件 因为数据存在不同的Oracle数据库中,DDL是相同的,处理逻辑也是相同...使用Oracle命令行的方式,批量执行Oracle不同用户下的sql文件,where条件带变量的操作。
Oracle SQL&PLSQL课件:第15章 PL-SQL变量.ppt
在绑定阶段,Oracle SQL 会获取变量值。在执行阶段,Oracle SQL 会处理 SQL 语句。在提取阶段,Oracle SQL 会将结果行返回用户进程。 Oracle SQL standards 是由美国国家标准学会(ANSI)和国际标准化组织(ISO)...
- **变量使用**:演示如何定义和使用SQL*Plus变量来增强脚本的功能性和灵活性。 - **环境配置**:指导用户如何自定义SQL*Plus环境,以适应个人偏好或特定需求。 ##### 进阶主题预览 除了基础内容外,《Pro Oracle ...
《Oracle SQL Performance Tuning and Optimization》是一本专为数据库管理员和开发人员设计的指南,旨在帮助读者深入理解如何优化Oracle数据库中的SQL查询性能。这本书详细介绍了Oracle SQL调优的各个方面,包括...
本篇文章将深入探讨Oracle PL/SQL变量的定义及其在存储过程、触发器和函数中的应用。 一、PL/SQL变量的定义 在PL/SQL中,变量是用来存储数据的容器。它们可以是基本数据类型,如NUMBER、VARCHAR2、DATE等,也可以...
2. 将上述Oracle Instant Client的库文件(如oraociei11.dll等)放置在系统路径环境变量指定的目录下,这样SqlDbx才能找到并使用它们。 3. 在SqlDbx中创建新的数据库连接,输入Oracle服务器的连接信息,如服务名...