- 浏览: 1730936 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (288)
- java (59)
- javaweb (15)
- eclipse (16)
- uml (1)
- java ee (7)
- windows (5)
- html (4)
- 数据结构和算法 (6)
- oracle (84)
- struts (3)
- ajax (3)
- hibernate (3)
- spring (12)
- ExtJS (14)
- 随笔 (2)
- JavaScript (9)
- PL SQL (12)
- tomcat (2)
- Plugins (5)
- office (2)
- webService (4)
- others (9)
- htc (1)
- 自定义标签的行为 (1)
- powerDesigner (3)
- webSphere (5)
- linux (6)
- dom4j (1)
- xml (5)
- json (2)
- bat (4)
- spring MVC (5)
- MySQL (12)
- junit (4)
- maven (10)
- jquery (1)
- mongoDB (16)
- git (0)
- mybatis (5)
- svn (3)
- activemq (3)
- quartz_job (1)
最新评论
-
白天看黑夜:
PDMReader实现pdm建模快速导出word,html文件 ...
利用powerDesigner逆向导出oracle表为PDM并把PDM转为CDM -
sanshao:
roompig 写道beancopier只实现了浅拷贝的功能, ...
使用Cglib的BeanCopier实现Bean的拷贝 -
贝塔ZQ:
Java实现导入导出excel文件,利用poi实现感觉代码比较 ...
利用java导入导出excel到oracle数据库 -
suxj16:
部署之后启动有问题org.springframework.be ...
spring mvc文件上传实现进度条(转) -
suxj16:
谢谢分享。部署之后启动有问题org.springframewo ...
spring mvc文件上传实现进度条(转)
控制结构
一、分支结构
1、if
注意:elsif 和else If
if(条件)then ... ... elsif ... ... end if ;
2、case
注意:
case语句中的条件选择器可以省略,when后面既可以是一个具体的值,也可以是一个或多个
条件表达式。
case语句可以返回一个值,这是和java中的switch区别的。
用法:
CASE 语句
CASE selector WHEN value1 THEN action1; WHEN value2 THEN action2; WHEN value3 THEN action3; ….. ELSE actionN; END CASE;
CASE表达式
DECLARE temp VARCHAR2(10); v_num number; BEGIN v_num := &i; temp := CASE v_num WHEN 0 THEN 'Zero' WHEN 1 THEN 'One' WHEN 2 THEN 'Two' ELSE NULL END; dbms_output.put_line('v_num = '||temp); END; /
CASE搜索语句
CASE WHEN (boolean_condition1) THEN action1; WHEN (boolean_condition2) THEN action2; WHEN (boolean_condition3) THEN action3; …… ELSE actionN; END CASE;
CASE搜索表达式
DECLARE a number := 20; b number := -40; tmp varchar2(50); BEGIN tmp := CASE WHEN (a>b) THEN 'A is greater than B' WHEN (a<b) THEN 'A is less than B' ELSE 'A is equal to B' END; dbms_output.put_line(tmp); END; /
SELECT CASE WHEN 的用法
select 与
case结合使用最大的好处有两点,一是在显示查询结果时可以灵活的组织格式,二是有效避免了多次对同一个表或几个表的访问。下面举个简单的例子来说明。
例如表 students(id, name ,birthday, sex,
grade),要求按每个年级统计男生和女生的数量各是多少,统计结果的表头为,年级,男生数量,女生数量。如果不用select case
when,为了将男女数量并列显示,统计起来非常麻烦,先确定年级信息,再根据年级取男生数和女生数,而且很容易出错。用select case
when写法如下:
SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位女生*/ ELSE NULL END) 男生数, COUNT (CASE WHEN sex = 2 THEN 1 ELSE NULL END) 女生数 FROM students GROUP BY grade;
二、循环结构
1、基本循环:无条件的循环
语法:
Loop
循环体;
End Loop;
注意:循环体中不要忘记添加退出循环的语句。使用exit 关键字进行循环的退出
loop .... --用于退出循环 if(条件)then exit ; end if ; .... end loop ;
2、有计数的循环(For循环)
语法:
For 计数器 In [Reverse] 循环下限..循环上限 Loop
循环体;
End Loop;
注意:计数器是一个不需要事先声明的整型变量,每次循环之后自动增1或者减1。
DECLARE --在此处定义变量 BEGIN FOR i IN 1..10 LOOP dbms_output.put_line(i) ; END LOOP ; END ;
3、有条件的循环(while)
语法:
While 条件 Loop
循环体;
End Loop;
DECLARE v_no NUMBER ; BEGIN v_no := 0 ; WHILE v_no<10 LOOP dbms_output.put_line(v_no) ; v_no := v_no+1 ; END LOOP ; END ;
4、循环嵌套和标签
复合数据类型
一、复合数据类型的概念
内部可以再有分量的数据类型叫做复合数据类型。此种数据类型不是Oracle自动提供的。
二、复合变量
和创建不同的变量形式相同。
变量名 数据类型名;
三、复合数据类型种类
1、记录型
记录数据类型相当于类,该类型里面的分量名相当于属性名
记录型变量相当于类的一个实例(对象)
语法:
a、创建数据类型
在decalre部分使用如下语法:
Type 记录型名字 Is Record (分量名列表);
其中分量名列表格式为:变量名 数据类型 [Not Null][Default][初始值]
b、创建该类型的变量
在declare部分使用如下语法:
变量名 记录型名字
c、记录型变量的引用。
如果想引用变量中的某一个分量,可以直接写 变量名.分量名
如果想引用整个变量,就直接写变量名
当使用Select为记录型变量赋值时,要注意Select后面的列名列表一定要和into后面的记录型
变量中的分量列表在个数和数据类型上保持一致。
案例:
declare type emp_record_type is Record ( v_empno emp.empno%type,v_ename emp.ename%type,v_sal emp.sal%type); --创建记录数据类型 emp_record emp_record_type;--创建记录型变量 begin select empno,ename,sal into emp_record from emp where empno = 7788;--为记录型变量赋值 dbms_output.put_line(emp_record.v_empno || emp_record.v_ename || emp_record.v_sal); --打印出记录型每一个分量 end;
练习:使用记录型变量显示在部门20中工资最低的员工姓名及部门名称。
Declare Type emp_record_type Is Record (v_ename emp.ename%Type,v_dname dept.dname%Type); emp_record emp_record_type; Begin Select ename,dname Into emp_record From emp ,dept Where emp.deptno = dept.deptno And emp.deptno = 20 And sal = (Select Min(sal) From emp Where deptno = 20); dbms_output.put_line(emp_record.v_ename || emp_record.v_dname); End;
记录类型的有效范围只在当前块中。
2、一种简便创建记录型变量的方式:%rowtype,使用该属性不用事先声明记录类型了,%前面允许写表名、视图名、游标名。
declare emp_record emp%Rowtype;--创建记录型变量 begin select * into emp_record from emp where empno = 7788;--为记录型变量赋值 dbms_output.put_line(emp_record.empno || emp_record.ename || emp_record.sal); --打印出记录型每一个分量 end;
3、PL/SQL表
略。
发表评论
-
日期差的天时分秒表示SQL(转)
2015-01-09 14:47 2432文章出自:http://blog.csdn.net/ ... -
MySQL分组后排序的问题(转)
2014-05-21 11:31 1722文章出自:http://zhidao.baidu.co ... -
在oracle的decode函数中实现like相同操作
2014-03-28 14:37 10906在oracle的decode函数中不能使用like操作 ... -
45个非常有用的Oracle查询语句分享
2014-03-17 13:41 972文章出自:http://tech.it168.com ... -
能使 Oracle 索引失效的七大限制条件
2014-03-17 13:11 6229文章出自:http://tech.it168.com/ ... -
oracle存储过程异常处理及时间戳变量类型
2014-03-15 18:02 3114下面通过一个简单 ... -
对只转发结果集的无效操作: isLast
2014-03-13 14:19 2728在遍历结果集的时候,用rs.isLast()来判断是否到达 ... -
oracle连接DBLINK报错:ORA-12154: TNS:could not resolve service name的解决办法(转)
2014-01-13 15:56 3158文章出自:http://blog.csdn.net/x ... -
查看oracle enterprise manager端口的途径(转)
2014-01-13 12:04 1334文章出自:http://www.myexception ... -
利用java导入导出excel到oracle数据库
2013-12-05 14:46 8643用到的JAR包如下(可以直接到POI官网上下载也可以 ... -
WebSphere+Oracle乱码问题解决
2013-11-26 15:01 1581环境介绍: Web容器(中间件):W ... -
v$session 的权限(转)
2013-11-15 13:32 1835文章出自:http://blog.csdn.net/x ... -
Oracle中查看所有表和字段(转)
2013-08-29 11:48 1258文章出自以下两个网站: Oracle中查看所有表和字 ... -
oracle杀掉正在运行的存储过程
2013-08-28 16:05 3268本篇文章主要介绍如何kill掉一个正在运行的存储过程, ... -
oracle中v$access视图介绍
2013-08-28 15:49 8490如果想了解如果杀掉一个正在运行的存储过程,请查询这篇 ... -
oracle 临时表介绍(整合)
2013-08-27 11:14 2482在工作中用临时表从A库到B库导入LOB(大)字段,用临 ... -
oracle 的连接操作(left jion,right jion, full jion)
2013-06-14 12:52 25441.创建测试表 -- Create table ... -
如何查看oracle的版本信息(转)
2013-05-07 08:30 1221文章出自: http://blog.sina.com. ... -
oracle触发器实践(增,改,删)
2013-04-27 14:02 1396实现对某个表的增改删的监控操作,并记录到另一个表中. ... -
Oracle如何正确删除archivelog文件(转)
2013-04-10 13:29 2961文章出自 : http://cac ...
相关推荐
PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种结合了SQL语言与过程编程的语言,专为数据库管理和应用程序开发设计。"PL/Sql_Demo_Oracle"标题表明这是一个关于PL/SQL在Oracle环境下的示例集合,可能包含...
PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一个结合了SQL语句和过程式编程语言的编程环境。它主要用于管理和控制Oracle数据库,是Oracle数据库开发的核心工具之一。PL/SQL...
3. **控制结构**:PL/SQL支持多种控制流程结构,如IF-THEN-ELSE、CASE、WHILE、FOR循环等,使得程序可以根据条件执行不同的代码路径。 4. **子程序**:PL/SQL支持函数和过程的创建,它们可以封装一系列的操作并在...
Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...
8. **EXAMP**: 06-EXAMP.SQL、10-EXAMP.SQL以及04-LOOP.SQL可能包含各种PL/SQL编程示例,如控制结构(如循环、条件语句)、异常处理和数据类型使用等。 9. **LOOP**: 04-LOOP.SQL专门涉及PL/SQL中的循环结构,包括...
在Oracle数据库中,PL/SQL提供了丰富的控制结构,如循环、条件判断,以及异常处理机制,使得开发者能够编写复杂的业务逻辑。例如,`IF...THEN...ELSIF...ELSE`语句用于实现条件分支,`WHILE`和`FOR`循环则可以处理...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作能力和过程性编程语言的控制结构。在"Oracle PL/SQL"这本书中,作者深入浅出地探讨了这一语言的核心概念和实用技巧,尤其适合法语...
PL/SQL(Procedural Language/Structured Query Language)是Oracle专为数据库操作设计的一种过程化编程语言,结合了SQL的强大查询功能与高级编程语言的控制结构,使得数据库管理员和开发人员能够更高效、安全地管理...
通过上述对Oracle 9i PL/SQL程序设计笔记的总结,我们可以看到PL/SQL作为一种强大的数据库编程语言,提供了丰富的功能来支持数据处理、事务控制及业务逻辑的实现。掌握PL/SQL的不同块类型及其使用方法对于开发高效、...
2. **控制结构**:PL/SQL中的控制结构包括条件语句(IF-THEN-ELSIF-ELSE)、循环语句(WHILE、FOR)、CASE表达式等,它们用于根据特定条件执行不同的代码块。 3. **异常处理**:Oracle PL/SQL有内置的异常处理机制...
1. **编程能力**:PL/SQL允许编写包含控制结构(如循环、条件语句)和异常处理的程序块,这些块可以存储在数据库中并按需调用,提高了数据库应用的灵活性和复杂性。 2. **数据处理**:通过PL/SQL,用户可以直接对...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...
PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...
### Oracle PL/SQL程序设计(第5版)(上下册)知识点概述 #### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL...
1. **Oracle PL/SQL基础**:PL/SQL是Procedural Language/Structured Query Language的缩写,它是Oracle为SQL添加的编程组件,支持流程控制、异常处理和子程序定义。在构建网上商店时,我们可能需要编写存储过程、...
3. **控制结构**:PL/PROCEDURE和PL/FUNCTION是PL/SQL的基本程序单元,前者不返回值,后者可以返回一个值。流程控制结构有IF-THEN-ELSIF-ELSE、CASE、FOR循环、WHILE循环和GOTO。 4. **SQL操作**:PL/SQL可以直接...
1. **PL/SQL基础**:PL/SQL的基础语法,如变量声明、数据类型、流程控制语句(如IF-THEN-ELSIF,FOR循环,WHILE循环)、异常处理(BEGIN-EXCEPTION-END结构)等。 2. **函数与过程**:如何定义和调用用户自定义的...
Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与结构化编程的优点结合在一起,是Oracle数据库系统中不可或缺的一部分。在"Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本"中,读者可以深入...
2. **流程控制**:PL/SQL提供了多种流程控制结构,如条件语句(IF-THEN-ELSIF-ELSE)、循环(WHILE、FOR、LOOP)、CASE表达式,以及异常处理(EXCEPTION)。这些结构使得程序可以根据不同条件执行不同的代码段。 3....
5. **PL/SQL控制结构**:包括IF-THEN-ELSIF-ELSE、CASE语句进行条件判断,WHILE、FOR循环实现迭代,LOOP结构进行无限循环或指定次数的循环,以及EXIT和GOTO语句进行流程控制。 6. **游标**:游标用于逐行处理查询...