- 浏览: 1715653 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (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 2351文章出自:http://blog.csdn.net/ ... -
MySQL分组后排序的问题(转)
2014-05-21 11:31 1686文章出自:http://zhidao.baidu.co ... -
在oracle的decode函数中实现like相同操作
2014-03-28 14:37 10815在oracle的decode函数中不能使用like操作 ... -
45个非常有用的Oracle查询语句分享
2014-03-17 13:41 925文章出自:http://tech.it168.com ... -
能使 Oracle 索引失效的七大限制条件
2014-03-17 13:11 6190文章出自:http://tech.it168.com/ ... -
oracle存储过程异常处理及时间戳变量类型
2014-03-15 18:02 3065下面通过一个简单 ... -
对只转发结果集的无效操作: isLast
2014-03-13 14:19 2672在遍历结果集的时候,用rs.isLast()来判断是否到达 ... -
oracle连接DBLINK报错:ORA-12154: TNS:could not resolve service name的解决办法(转)
2014-01-13 15:56 3086文章出自:http://blog.csdn.net/x ... -
查看oracle enterprise manager端口的途径(转)
2014-01-13 12:04 1292文章出自:http://www.myexception ... -
利用java导入导出excel到oracle数据库
2013-12-05 14:46 8561用到的JAR包如下(可以直接到POI官网上下载也可以 ... -
WebSphere+Oracle乱码问题解决
2013-11-26 15:01 1543环境介绍: Web容器(中间件):W ... -
v$session 的权限(转)
2013-11-15 13:32 1791文章出自:http://blog.csdn.net/x ... -
Oracle中查看所有表和字段(转)
2013-08-29 11:48 1223文章出自以下两个网站: Oracle中查看所有表和字 ... -
oracle杀掉正在运行的存储过程
2013-08-28 16:05 3188本篇文章主要介绍如何kill掉一个正在运行的存储过程, ... -
oracle中v$access视图介绍
2013-08-28 15:49 8394如果想了解如果杀掉一个正在运行的存储过程,请查询这篇 ... -
oracle 临时表介绍(整合)
2013-08-27 11:14 2434在工作中用临时表从A库到B库导入LOB(大)字段,用临 ... -
oracle 的连接操作(left jion,right jion, full jion)
2013-06-14 12:52 25011.创建测试表 -- Create table ... -
如何查看oracle的版本信息(转)
2013-05-07 08:30 1167文章出自: http://blog.sina.com. ... -
oracle触发器实践(增,改,删)
2013-04-27 14:02 1345实现对某个表的增改删的监控操作,并记录到另一个表中. ... -
Oracle如何正确删除archivelog文件(转)
2013-04-10 13:29 2920文章出自 : http://cac ...
相关推荐
《oracle pl/sql程序设计(第5版)》基于oracle数据库11g,从pl/sql编程、pl/sql程序结构、pl/sql程序数据、pl/sql中的sql、pl/sql应用构建、高级pl/sql主题6个方面详细系统地讨论了pl/sql以及如何有效地使用它。...
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL...
第四章 PL/SQL的控制结构 第五章 PL/SQL集合与记录 第六章 PL/SQL与Oracle间交互 第七章 控制PL/SQL错误 第八章 PL/SQL子程序 第九章 PL/SQL包 第十章 PL/SQL对象类型 第十一章 本地动态SQL 第十二章 PL/SQL...
第13章 编写控制结构 第14章 使用复合数据类型 第15章 使用游标 第16章 异常处理 . 第17章 本地动态sql 第18章 pl/sql过程 第19章 pl/sql函数 第20章 pl/sql包 第21章 触发器 第22章 使用对象...
PL/SQL简介(第1~2章) PL/SQL中的SQL语句(第3章) 控制结构(第4~7章) 异常处理(第8~10章) 游标(第11~12章) 触发器(第13~14章) 复合数据类型(第15~16章) 动态SQL(第17章) 批量SQL(第18章) 子程序和包...
14oracle的PL/SQL编程-控制结构 PPT 14oracle的PL/SQL编程-控制结构 PPT
本书是专门为Oracle应用开发人员提供的SQL和PL/SQL编程指南。通过学习本书,读者不仅可以掌握Oracle常用工具Oracle Universal Installer、Net Comfiguration Assistant、SQL Developer、SQL*Plus的作用及使用方法,...
第13章 编写控制结构 第14章 使用复合数据类型 第15章 使用游标 第16章 异常处理 . 第17章 本地动态sql 第18章 pl/sql过程 第19章 pl/sql函数 第20章 pl/sql包 第21章 触发器 第22章 使用对象...
控制结构 PL/SQL程序段中有三种程序结构:条件结构、循环结构和顺序结构。 1) 条件结构 与其它语言完全类似,语法结构如下: if condition thenstatement1elsestatement2end if ; 2) 循环结构 这一结构与其他...
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
控制结构 12 小结 17 2.PL/SQL的复合数据类型 17 使用记录 19 PL/SQL集合 23 嵌套表 24 使用集合 25 集合的方法 28 关于集合之间的比较 29 3.PL/SQL单行函数和组函数详解 29 单行字符串函数 30 单行转换函数 37 SQL...
第四章 PL-SQL的控制结构 第五章 PL-SQL集合与记录(1) 第六章 PL-SQL集合与记录(2) 第七章 PL-SQL与Oracle间交互 第八章 控制PL-SQL错误 第九章 PL-SQL子程序 第十章 PL-SQL包 第十一章 PL-SQL对象类型 第十二章...
SQL: 结构化查询语言(Structured Query ...PL/SQL: Oracle 扩展的SQL语言,具有完整的流程控制定义。 SQL*Plus: Oracle 常用的工具,用来识别SQL语言和编写、执行PL/SQL代码,它与Oracle 数据库管理系统紧密结合。
【实验目的】 1. 熟悉PL/SQL的数据类型和书写规则 2. 熟悉控制结构和游标的使用 3. 编写和运行函数、过程和触发器
PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL...
• Oracle PL/SQL语言基础(2) • Oracle PL/SQL语言基础(3) 复合数据类型 PL/SQL 有两种复合数据结构:记录和集合。记录由不同的域组成,集合由不同的元素组成。在本文中我 们将讨论记录和集合的类型、怎样定义和...
从Oracle6开始,Oracle公司在标准SQL的基础上发展了自己的PL/SQL语言,将变量、控制结构、过程和函数等结构化程序设计的要素引入了SQL语言中,这样就能够编制比较复杂的SQL程序了,利用PL/SQL语言编写的程序也称为...
至于数据定义(DDL)和数据控制(DCL)命令的处理,需要通过Oracle提供的特殊的DMBS_SQL包来进行。PL/SQL还可以用来编写过程、函数、包及数据库触发器。过程和函数也称为子程序,在定义时要给出相应的过程名和函数名。...