pl/sql基础知识—pl/sql块介绍
n 介绍
块(block)是pl/sql的基本成型单元,编写pl/sql程序实际上就是编写pl/sql块。要完成相对简单的应用功能,可能只需要编写一个pl/sql块;但是如果要想实现复杂的功能,可能需要在一个pl/sql块中嵌套其它的pl/sql块。、
n 块结构示意图
pl/sql块由三个部分构成:定义部分、执行部分、例外处理部分,如下所示:
n 案例1--只包括执行部分的pl/sql块。
案例:输出hello,world
☞相关说明:
dbms_output是oracle所提供的包(类似java的开发包),该包包含一些过程,put_line就是dbms_output包的一个过程。
SQL>
set serveroutput on; //打开控制台显示,默认不输出,需要执行此命令才会输出显示
SQL>
SQL>
begin
2
dbms_output.put_line('hello,world');
3
end;
4 /
hello,world
PL/SQL
procedure successfully completed
n 案例2--包括定义部分和执行部分的pl/sql块。
案例:根据用户输入的雇员编号,显示该雇员的名字
☞相关说明:
&
表示要接收从控制台输入的变量
‖表示把两个串拼接
declare --定义变量的格式:变量名称 变量的类型
v_ename varchar2(8);
begin
select
ename into
v_ename from
emp where
empno=&empno;--把查询的ename值放入v_ename变量
---输出v_ename
dbms_output.put_line('雇员名是:'||v_ename);
end;
雇员名是:SMITH
PL/SQL
procedure successfully completed
将其改为过程
SQL>
create procedure pro3(in_empno number) is
2
v_ename varchar2(8);
3
begin
4
select ename into v_ename from emp where empno=in_empno;
5
dbms_output.put_line('雇员名是:'||v_ename);
6
end;
7 /
Procedure
created
SQL>
exec pro3(7369);
雇员名是:SMITH
PL/SQL
procedure successfully completed
n 案例3--包括定义部分和执行部分和例外处理部分。
为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能的错误进行处理,这个很有必要:
①比如在案例2中,如果输入了不存在的雇员号,应当做例外处理
②有时出现异常,希望用另外的逻辑处理,比如:如果不存在就加入编号为1,名字为‘马大哈’这么一个人。
我们看看如何完成①的要求
相关说明:oracle事先预定义了一些例外,no_data_found就是找不到数据的例外。
SQL> declare
2
v_ename varchar2(8);
3
begin
4
select ename into v_ename from emp where empno=&empno;
5
dbms_output.put_line('雇员名是:'||v_ename);
6
exception
7 when no_data_found then
8
dbms_output.put_line('朋友,你输入的编号有误');
9
end;
10 /
朋友,你输入的编号有误
PL/SQL procedure successfully
completed
对该案例的细节说明:这里我们涉及到异常处理,
异常处理的基本语法:
exception
when 异常的名称
then
//对异常进行处理的代码......
//对异常进行处理的代码......
when 异常的名称2
then
//对异常进行处理的代码......
end;
oracle提供的异常有:(参考pl/sql官方文档)大概23种
有时可以利用异常来进行业务处理。比如:如果不存在就加入编号为1,名字为‘马大哈’这么一个人。
SQL> declare
2
v_ename varchar2(8);
3
begin
4
select ename into v_ename from emp where empno=&empno;
5
dbms_output.put_line('雇员名是:'||v_ename);
6
exception
7
when no_data_found then
8
dbms_output.put_line('朋友,你输入的编号有误!我帮你加入一条');
9
insert into emp (empno,ename) values(1,'马大哈');
10
end;
11 /
朋友,你输入的编号有误!我帮你加入一条
PL/SQL procedure successfully
completed
pl/sql基础知识—pl/sql块介绍的更多相关文章
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式
SQL 基础知识梳理(六)- 函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2. ...
- [SQL] SQL 基础知识梳理(七)- 集合运算
SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...
- 常见SQL语句和SQL基础知识
引自:http://blog.csdn.net/u012467492/article/details/46790205 SQL语句考察(一) 1.查询出每门课都大于80 分的学生姓名 name k ...
- [SQL基础教程]1-4 SQL 表的创建
[SQL基础教程]1-4 SQL 表的创建 创建数据库 语法 CREATE DATABASE <数据库名称> // example CREATE DATABASE shop; 创建表 语法 ...
随机推荐
- 新增对象Products 的流程说明
库内新增对象Products 的流程说明: 第一步: com.jeecms.cms.entity.assist.base下建立模型基础类,BaseCmsProducts.java com.jeecms ...
- 嘴巴题1 LA2531 足球联赛
LA2531 足球联赛 题目: 有n只队伍打比赛,给出每只队目前获胜和失败的场数,再给出两两队伍接下来的比赛场次,问你哪些队伍可能的冠军 (题面摘自http://blog.csdn.net/s_h_r ...
- spotbus gradle-qulity-plugiin 多项目bug检查
https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html https://xvik.github.io/gradle-quality ...
- 再也不怕数据丢失!阿里云RDS MySQL 8.0上线回收站功能
背景 MySQL 在生产环境使用过程中,会伴随着开发和运维人员的误操作,比如 DROP TABLE / DATABASE,这类 DDL 语句不具有可操作的回滚特性,而导致数据丢失,AliSQL 8.0 ...
- (5)连续非周期信号的傅里叶变换(频谱) & 周期信号的傅里叶变换
参考资料:<信号与系统(第二版)> 杨晓非 何丰 从傅里叶级数到傅里叶变换 通过分析连续周期信号的周期与频谱的关系,当周期趋于无穷大的时候,周期信号变成非周期信号.从频谱分析观点来看,当T ...
- CentOS7配置中文支持与部署GitLab服务器
给你的 CentOS 7 安装中文支持 1.首先需要中文字体以便支持命令行终端的中文显示需求: yum groupinstall "fonts" 碰到提示输入 y 回车继续安装,大 ...
- hystrix熔断器
在一个具有多服务的应用中,假如由于其中某一个服务出现问题,导致响应速度变慢,或是根本没有响应返回,会导致它的服务消费者由于长时间的等待,消耗尽线程,进而影响到对其他服务的线程调用,进而会转变为整个应用 ...
- leetcode 76 dp& 强连通分量&并查集经典操作
800. Similar RGB Color class Solution { int getn(int k){ return (k+8)/17; } string strd(int k){ char ...
- PYTHON网络爬虫与信息提取[网络爬虫协议](单元二)
robots.txt在网站的根目录下 遵守 自动或人工识别robots.txt再进行内容爬取 约束性:建议性,不遵守协议,存在法律风险. 基本语法: User-agent: * Disallow: / ...
- 2019-9-2-win10-uwp-存放网络图片到本地
title author date CreateTime categories win10 uwp 存放网络图片到本地 lindexi 2019-09-02 12:57:38 +0800 2018-2 ...