- 浏览: 548064 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
北月与南安:
哥哥不要秀我,答案是11.38,你算出来36.43,要求N个点 ...
平均距离 -
xiao_android_jun:
[color=red][ size=xx-small ...
Android 之 进程的概念介绍 -
明子健:
小伙子,很有前途哦
《将博客搬至CSDN》 -
1140566087:
dugujiujian 写道R.layout.simple_s ...
Android 之 下拉(Spinner) 组件示例 -
dugujiujian:
R.layout.simple_spinner_dropdow ...
Android 之 下拉(Spinner) 组件示例
[/color][color=orange]SQL> set serveroutput on
SQL> remark 控制语句
SQL> remark 异常处理
SQL> REMARK ..........................................................
SQL> REMARK IF...THEN 的判断语法
SQL> remark IF 条件标示式 WHEN 执行语句 END IF; 示例如下:
SQL> REMARK 使用分组函数 条件判断的按列
SQL> EDIT
Wrote file afiedt.buf
1 DECLARE
2 SUMSAL SCOTT.EMP.SAL%TYPE;
3 BEGIN
4 SELECT SUM(SAL) INTO SUMSAL FROM SCOTT.EMP GROUP BY DEPTNO HAVING DEPTNO=30;
5 IF SUMSAL>5000 THEN
6 DBMS_OUTPUT.PUT_LINE('部门30的工资总额已经超过了预算,供'||SUMSAL);
7 END IF;
8* END;
SQL> /
部门30的工资总额已经超过了预算,供9400
PL/SQL procedure successfully completed.
SQL> REMARK 如果存在了分支条件,使用 IF...ELSIF..ELSE...END IF;
SQL> REMARK 多元分支条件控制case
SQL> REMARK 连接scott账户
SQL> conn scott/tiger;
Connected.
SQL> DECLARE
2 THESAL EMP.SAL%TYPE;
3 BEGIN
4 SELECT SAL INTO THESAL FROM EMP WHERE EMPNO=7369;
5 CASE
6 WHEN THESAL<1000 THEN
7 DBMS_OUTPUT.PUT_LINE('低工资');
8 WHEN THESAL>=1000 THEN
9 DBMS_OUTPUT.PUT_LINE('一般工资');
10 ELSE
11 DBMS_OUTPUT.PUT_LINE('高工资');
12 END CASE;
13 END;
14 /
PL/SQL procedure successfully completed.
SQL> SET SERVEROUTPUT ON;
SQL> REMARK 循环控制loop和end loop ; 之间的语句将无限次的执行,如果要跳出则使用exit;
SQL> remark 语法:loop exit when 条件表达式;执行语句 ; end loop;
SQL> remark 案例:累加的例子
SQL> declare
2 cou int default 10;
3 result int :=0;
4 begin
5 DBMS_OUTPUT.PUT_LINE('循环开始.....');
6 LOOP
7 EXIT WHEN COU>20;
8 result :=result + cou;
9
10 DBMS_OUTPUT.PUT_LINE('进入循环..'||cou||'结果是:'||result);
11 cou :=cou+1;
12 end loop;
13 dbms_output.put_line('最后的结果是:'||result);
14 end;
15 /
循环开始.....
进入循环..10结果是:10
进入循环..11结果是:21
进入循环..12结果是:33
进入循环..13结果是:46
进入循环..14结果是:60
进入循环..15结果是:75
进入循环..16结果是:91
进入循环..17结果是:108
进入循环..18结果是:126
进入循环..19结果是:145
进入循环..20结果是:165
最后的结果是:165
PL/SQL procedure successfully completed.
SQL> remark 循环控制还可以使用for 循环和while 进行循环,这两种循环都是以loop循环作为基础
SQL> remark 语法:for 变量 in 起始值..结束值 loop 执行语句; end loop;
SQL> remark 注:for循环的语法控制中,变量的定义不用声明,变量的边界值都会进入循环;.......
案例:
SQL> declare
2 result int :=0;
3 begin
4 dbms_output.put_line('循环开始...');
5 for cou in 10..20
6 loop
7 result :=result+cou;
8 dbms_output.put_line('进入循环..'||cou||'结果是:'||result);
9 end loop;
10 dbms_output.put_line('循环结束:'||result);
11 end;
12 /
循环开始...
进入循环..10结果是:10
进入循环..11结果是:21
进入循环..12结果是:33
进入循环..13结果是:46
进入循环..14结果是:60
进入循环..15结果是:75
进入循环..16结果是:91
进入循环..17结果是:108
进入循环..18结果是:126
进入循环..19结果是:145
进入循环..20结果是:165
循环结束:165
PL/SQL procedure successfully completed.
SQL> remark while 的循环用法
SQL> remark 语法:while 条件表达式 loop 执行语句; end loop;
SQL> remark ................................................................
SQL> remark 跳转控制:标示跳转的指令是 goto
SQL> remark 语法:执行语句 <<节名称>> 执行语句;
SQL> remark 如果只希望 节 作为一个跳转的点,并不执行任何语句,可以使用null,使用return 结束
程序
SQL> remark 跳转的案例:
SQL> declare
2 sumsal emp.sal%type;
3 begin
4 select sum(sal) into sumsal from emp where deptno=30;
5 if sumsal>2000 then
6 goto first;
7 elsif sumsal>3000 then
8 goto second;
9 else
10 goto third;
11 end if;
12
13 <<first>>
14 dbms_output.put_line('first'||sumsal);
15 return;
16 <<second>>
17 dbms_output.put_line('second'||sumsal);
18 return;
19 <<third>>
20 null;
21 end;
22 /
first9400
PL/SQL procedure successfully completed.
SQL> remark ................................................................
SQL> remark 记录:PS记录只有一行,但是由多列,有点类型于程序中的结构
SQL> remark 记录的定义:type <类型名> is record <列名 1 类型 1,....列名n 类型n,>
SQL> remark 案例:
SQL> edit;
Wrote file afiedt.buf
1 declare
2 type empsub is record (myeno emp.empno%type,myename emp.ename%type,mysa emp.sal
%type);
3 mycord empsub;
4 begin
5 select empno,ename,sal into mycord from emp where empno = 7369;
6 dbms_output.put_line('编号1:'||mycord.myeno);
7* end;
SQL> /
编号1:7369
PL/SQL procedure successfully completed.
SQL> remark empsub 定义了一种数据类型
SQL> remark..................................................................
SQL> remark 异常:一种为内部异常,一种为用户自定义异常;
SQL> remark PS中要捕获异常,必须使用系统所给的异常名称,而不是异常的编号;
SQL> declare
2 newsal emp.sal%type;
3 begin
4 select sal into newsal from emp where deptno = 30;
5 dbms_output.put_line('工资是:'||newsal);
6 exception
7 when too_many_rows then
8 dbms_output.put_line('数据插入记录太多');
9 end;
10 /
数据插入记录太多
PL/SQL procedure successfully completed.
SQL> remark 自定义异常
SQL> remark declare 异常名 exception; ----声明异常
SQL> remark raise 异常名; --抛出异常
SQL> remark exception when 异常名 then 。....-- 捕获异常 并进行相关的处理
SQL> remark RAISE_APPLICATION_ERROR(错误编码,错误消息);
SQL> remark 错误编码:用户为抛出异常指定的编号,-20000和-20999之间
SQL> remark 错误消息:是用户定义的错误的消息,消息的长度是2048;
SQL> declare
2 thesal emp.sal%type;
3 begin
4 select sal into thesal from emp where empno=7369;
5 if thesal>2000 then
6 raise_application_error(-20001,'工资不再调整的范围');
7 end if;
8 end;
9 /
PL/SQL procedure successfully completed.
SQL> remark ................................................................
SQL> remark 动态SQL ,动态的构造一个查询语句;语法:
SQL> remark execute immediate 'SQL语句字符串';
SQL> remark 创建一个表:
SQL> begin
2 execute immediate
3 'create table hopecalss(claid number,calName char(6))';
4 end;
5 /
PL/SQL procedure successfully completed.
SQL> remark 动态的SQL进行参数的传递 有时候进行结果的变量;
SQL> edit
Wrote file afiedt.buf
1 declare
2 sqlstring varchar2(200);
3 dept_id number(2):=50;
4 dept_name varchar(14):='personnel';
5 location varchar(13):='develop';
6 begin
7 --演示的是usingredients字句的execute immediate
8 sqlstring :='insert into dept values(:1,:2,:3)';
9 execute immediate sqlstring using dept_id,dept_name,location;
10* end;
11 /
PL/SQL procedure successfully completed.
SQL> spool off;
[color=orange][/color][size=x-small][/size]
SQL> remark 控制语句
SQL> remark 异常处理
SQL> REMARK ..........................................................
SQL> REMARK IF...THEN 的判断语法
SQL> remark IF 条件标示式 WHEN 执行语句 END IF; 示例如下:
SQL> REMARK 使用分组函数 条件判断的按列
SQL> EDIT
Wrote file afiedt.buf
1 DECLARE
2 SUMSAL SCOTT.EMP.SAL%TYPE;
3 BEGIN
4 SELECT SUM(SAL) INTO SUMSAL FROM SCOTT.EMP GROUP BY DEPTNO HAVING DEPTNO=30;
5 IF SUMSAL>5000 THEN
6 DBMS_OUTPUT.PUT_LINE('部门30的工资总额已经超过了预算,供'||SUMSAL);
7 END IF;
8* END;
SQL> /
部门30的工资总额已经超过了预算,供9400
PL/SQL procedure successfully completed.
SQL> REMARK 如果存在了分支条件,使用 IF...ELSIF..ELSE...END IF;
SQL> REMARK 多元分支条件控制case
SQL> REMARK 连接scott账户
SQL> conn scott/tiger;
Connected.
SQL> DECLARE
2 THESAL EMP.SAL%TYPE;
3 BEGIN
4 SELECT SAL INTO THESAL FROM EMP WHERE EMPNO=7369;
5 CASE
6 WHEN THESAL<1000 THEN
7 DBMS_OUTPUT.PUT_LINE('低工资');
8 WHEN THESAL>=1000 THEN
9 DBMS_OUTPUT.PUT_LINE('一般工资');
10 ELSE
11 DBMS_OUTPUT.PUT_LINE('高工资');
12 END CASE;
13 END;
14 /
PL/SQL procedure successfully completed.
SQL> SET SERVEROUTPUT ON;
SQL> REMARK 循环控制loop和end loop ; 之间的语句将无限次的执行,如果要跳出则使用exit;
SQL> remark 语法:loop exit when 条件表达式;执行语句 ; end loop;
SQL> remark 案例:累加的例子
SQL> declare
2 cou int default 10;
3 result int :=0;
4 begin
5 DBMS_OUTPUT.PUT_LINE('循环开始.....');
6 LOOP
7 EXIT WHEN COU>20;
8 result :=result + cou;
9
10 DBMS_OUTPUT.PUT_LINE('进入循环..'||cou||'结果是:'||result);
11 cou :=cou+1;
12 end loop;
13 dbms_output.put_line('最后的结果是:'||result);
14 end;
15 /
循环开始.....
进入循环..10结果是:10
进入循环..11结果是:21
进入循环..12结果是:33
进入循环..13结果是:46
进入循环..14结果是:60
进入循环..15结果是:75
进入循环..16结果是:91
进入循环..17结果是:108
进入循环..18结果是:126
进入循环..19结果是:145
进入循环..20结果是:165
最后的结果是:165
PL/SQL procedure successfully completed.
SQL> remark 循环控制还可以使用for 循环和while 进行循环,这两种循环都是以loop循环作为基础
SQL> remark 语法:for 变量 in 起始值..结束值 loop 执行语句; end loop;
SQL> remark 注:for循环的语法控制中,变量的定义不用声明,变量的边界值都会进入循环;.......
案例:
SQL> declare
2 result int :=0;
3 begin
4 dbms_output.put_line('循环开始...');
5 for cou in 10..20
6 loop
7 result :=result+cou;
8 dbms_output.put_line('进入循环..'||cou||'结果是:'||result);
9 end loop;
10 dbms_output.put_line('循环结束:'||result);
11 end;
12 /
循环开始...
进入循环..10结果是:10
进入循环..11结果是:21
进入循环..12结果是:33
进入循环..13结果是:46
进入循环..14结果是:60
进入循环..15结果是:75
进入循环..16结果是:91
进入循环..17结果是:108
进入循环..18结果是:126
进入循环..19结果是:145
进入循环..20结果是:165
循环结束:165
PL/SQL procedure successfully completed.
SQL> remark while 的循环用法
SQL> remark 语法:while 条件表达式 loop 执行语句; end loop;
SQL> remark ................................................................
SQL> remark 跳转控制:标示跳转的指令是 goto
SQL> remark 语法:执行语句 <<节名称>> 执行语句;
SQL> remark 如果只希望 节 作为一个跳转的点,并不执行任何语句,可以使用null,使用return 结束
程序
SQL> remark 跳转的案例:
SQL> declare
2 sumsal emp.sal%type;
3 begin
4 select sum(sal) into sumsal from emp where deptno=30;
5 if sumsal>2000 then
6 goto first;
7 elsif sumsal>3000 then
8 goto second;
9 else
10 goto third;
11 end if;
12
13 <<first>>
14 dbms_output.put_line('first'||sumsal);
15 return;
16 <<second>>
17 dbms_output.put_line('second'||sumsal);
18 return;
19 <<third>>
20 null;
21 end;
22 /
first9400
PL/SQL procedure successfully completed.
SQL> remark ................................................................
SQL> remark 记录:PS记录只有一行,但是由多列,有点类型于程序中的结构
SQL> remark 记录的定义:type <类型名> is record <列名 1 类型 1,....列名n 类型n,>
SQL> remark 案例:
SQL> edit;
Wrote file afiedt.buf
1 declare
2 type empsub is record (myeno emp.empno%type,myename emp.ename%type,mysa emp.sal
%type);
3 mycord empsub;
4 begin
5 select empno,ename,sal into mycord from emp where empno = 7369;
6 dbms_output.put_line('编号1:'||mycord.myeno);
7* end;
SQL> /
编号1:7369
PL/SQL procedure successfully completed.
SQL> remark empsub 定义了一种数据类型
SQL> remark..................................................................
SQL> remark 异常:一种为内部异常,一种为用户自定义异常;
SQL> remark PS中要捕获异常,必须使用系统所给的异常名称,而不是异常的编号;
SQL> declare
2 newsal emp.sal%type;
3 begin
4 select sal into newsal from emp where deptno = 30;
5 dbms_output.put_line('工资是:'||newsal);
6 exception
7 when too_many_rows then
8 dbms_output.put_line('数据插入记录太多');
9 end;
10 /
数据插入记录太多
PL/SQL procedure successfully completed.
SQL> remark 自定义异常
SQL> remark declare 异常名 exception; ----声明异常
SQL> remark raise 异常名; --抛出异常
SQL> remark exception when 异常名 then 。....-- 捕获异常 并进行相关的处理
SQL> remark RAISE_APPLICATION_ERROR(错误编码,错误消息);
SQL> remark 错误编码:用户为抛出异常指定的编号,-20000和-20999之间
SQL> remark 错误消息:是用户定义的错误的消息,消息的长度是2048;
SQL> declare
2 thesal emp.sal%type;
3 begin
4 select sal into thesal from emp where empno=7369;
5 if thesal>2000 then
6 raise_application_error(-20001,'工资不再调整的范围');
7 end if;
8 end;
9 /
PL/SQL procedure successfully completed.
SQL> remark ................................................................
SQL> remark 动态SQL ,动态的构造一个查询语句;语法:
SQL> remark execute immediate 'SQL语句字符串';
SQL> remark 创建一个表:
SQL> begin
2 execute immediate
3 'create table hopecalss(claid number,calName char(6))';
4 end;
5 /
PL/SQL procedure successfully completed.
SQL> remark 动态的SQL进行参数的传递 有时候进行结果的变量;
SQL> edit
Wrote file afiedt.buf
1 declare
2 sqlstring varchar2(200);
3 dept_id number(2):=50;
4 dept_name varchar(14):='personnel';
5 location varchar(13):='develop';
6 begin
7 --演示的是usingredients字句的execute immediate
8 sqlstring :='insert into dept values(:1,:2,:3)';
9 execute immediate sqlstring using dept_id,dept_name,location;
10* end;
11 /
PL/SQL procedure successfully completed.
SQL> spool off;
[color=orange][/color][size=x-small][/size]
发表评论
-
Oracle 11G 数据库卸载
2013-10-08 21:46 9791、 开始->设置->控制面板->管理工具->服务 停止所有O ... -
ORACL系统用户密码忘了解决方案
2013-09-23 13:38 981忘记密码的情况下输入下列命令: 无登陆进入SQL>:s ... -
Oracle 11G 复习大纲
2013-06-19 00:38 1531一、 第一章 Oracle 入门: 1. 账号/密码:syst ... -
Oracle 触发器
2013-04-09 15:31 632SQL> set serveroutput on; S ... -
Oracle Java连接数据库
2013-04-07 21:28 889方法一:通过Oracle数据库驱动程序:ojdbc6.jar( ... -
Oracle 内置子程序简介
2013-04-07 21:27 989SQL> set serveroutput on; S ... -
Oracle 内置子程序简介
2013-03-20 12:41 99大学生兼职支持:http://sunzonebusiness. ... -
Oracle 触发器
2013-03-20 12:40 18大学生创业支持:http://sunzonebusiness. ... -
Oracle Java连接数据库
2013-03-19 15:15 198大学生创业支持:http://sunzonebusiness. ... -
Oracle PL/SQL 事务
2013-03-14 08:26 1188SQL> set serveroutpu on; SQL ... -
Oracle PL/SQL 函数
2013-03-14 08:25 1186SQL> remark 函数:函数的定义 SQL> ... -
Oracle PL/SQL 包的使用
2013-03-14 08:23 1273SQL> set serveroutput on; SQ ... -
Oracle PL/SQL 存储过程
2013-03-14 08:22 948SQL> remark 过程、函数、包、触发器都是带有名 ... -
Oracle 游标-引用游标
2013-03-14 08:21 1243SQL> set severoutput on; SP2 ... -
Oracle 游标 静态游标
2013-03-08 17:40 869[size=medium][/size]SQL> set ... -
Oracle 数据库对象 索引
2013-03-08 17:39 975SQL> remark 索引是关系型数据库中用于加快数据 ... -
Oracle 数据库对象-视图
2013-03-08 17:39 904SQL> remark ..............视图 ... -
Oracle 11g 数据库对象-序列
2013-03-08 17:37 1241SQL> remark 序列:Oracle中按照一定规则 ... -
Oracle 11g 数据库对象-同义词
2013-03-08 17:36 1060SQL> remark 同义词:Oracle为了方便对数 ... -
PL/SQL
2013-03-07 09:22 794SQL> remark SQL> remark p ...
相关推荐
pl/sql例题代码pl/sql例题代码pl/sql例题代码
SQL基本语句和PL/SQL语句,很多实例,让你一目了然
PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及...
在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL免安装版,点击即用,非常方便!
在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 ...
探讨了数据类型、条件控制语句和顺序控制语句、循环、异常处理、安全特性、全球化和本地化问题, 以及PL/SQL架构。 ? 通过使用过程、函数、触发器和包,建立模块化的PL/SQL应用。 内容推荐 《Oracle PL/SQL程序...
它寄托于传统的 SQL 语句,同时又在功能上做了不少的扩充。PL/SQL 有着太多的优势,甚至让SQL 在它面前也黯然失色。 PL/SQL Developer 这款数据库开发环境的功能十分全面,大大缩短了程序员的开发周期。强大的 PL/...
PL/SQL 编程基础知识详解,PL/SQL 包含过程化语句和SQL语句数据操作和查询语句被包含在PL/SQL代码的程序单元中(PL/SQL块),经过逻辑判断、循环等操作完成复杂的功能或者计算.。
PL/SQL中的SQL语句(第3章) 控制结构(第4~7章) 异常处理(第8~10章) 游标(第11~12章) 触发器(第13~14章) 复合数据类型(第15~16章) 动态SQL(第17章) 批量SQL(第18章) 子程序和包(第19~22章) Oracle中...
更进一步,您还可以自动获取所执行的SQL语句和PL/SQL程序统计信息。该统计信息包括CPU使用情况、块I/O、记录I/O、表格扫描、分类等。 HTML指南——Oracle目前支持HTML格式的在线指南。您可以将其集成到PL/SQL...
PL/SQL使用方法: 1、工具--首选项--用户界面--PL/SQL美化器--规则文件,选择.br的规则文件,点确定按钮。 2、点击工具栏的“PL/SQL美化器”,会自动把一段SQL语句重新排版美化。
本书是专门为oracle开发人员而提供的编程指南 通过学习本书 读者不仅可以掌握编写sql语句和pl/sql块的基础知识 而且还可以掌握sql高级特征 正则表达式 flashback查询 merge语句 sql:1999连接 和pl/sql高级特征 ...
更进一步,您还可以自动获取所执行的SQL语句和PL/SQL程序统计信息。该统计信息包括CPU使用情况、块I/O、记录I/O、表格扫描、分类等。 HTML指南——Oracle目前支持HTML格式的在线指南。您可以将其集成到PL/SQL ...
PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要优势。 PL/SQL Developer 是一个为 Oracle 数据库开发存储程序单元的集成开发环境(IDE) ,使用PL/SQL Developer,你能...
更进一步,您还可以自动获取所执行的SQL语句和PL/SQL程序统计信息。该统计信息包括CPU使用情况、块I/O、记录I/O、表格扫描、分类等。 HTML指南——Oracle目前支持HTML格式的在线指南。您可以将其集成到PL/SQL...
对于SQL,ORACLE必须在同一时间处理每一条SQL语句,在网络环境下这就意味作每一个独立的调用都必须被oracle服务器处理,这就占用大量的服务器时间,同时导致网络拥挤。而PL/SQL是以整个语句块发给服务器,这就降低...
通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录...
PL/SQL 不是一个独立的产品,他是一个整合到ORACLE服务器和ORACLE工具中的技术,可以把PL/SQL看作ORACLE服务器内的一个引擎,sql语句执行者处理单个的sql语句,PL/SQL引擎处理PL/SQL程序块。当PL/SQL程序块在PL/SQL...
PL/SQL 创库语句PL/SQL 创库语句PL/SQL 创库语句
探讨了数据类型、条件控制语句和顺序控制语句、循环、异常处理、安全特性、全球化和本地化问题, 以及PL/SQL架构。 ? 通过使用过程、函数、触发器和包,建立模块化的PL/SQL应用。 内容推荐 《Oracle PL/SQL程序...