博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle之PL/SQL学习笔记之存储过程(六)
阅读量:6443 次
发布时间:2019-06-23

本文共 1794 字,大约阅读时间需要 5 分钟。

hot3.png

Oracle之PL/SQL学习笔记之存储过程(六)

1. 认识存储过程

    存储过程是Oracle开发者在数据转换或查询报表时最经常使用的方式之一。

1. 1. 什么是存储过程

  存储过程就是存储在数据库服务器中的一段封装的一段或多端SQL语句的PL/SQL代码块。

1.2 存储过程的作用

存储过程编写相对比较复杂,但很多单位或个人都在使用它。显然这不是因为存储过程编写简单,而是因为它一系列的有点:

  • 简化复杂的操作。存储过程可以把需要执行的多条SQL与复杂的业务逻辑封装到一个独立的单元中。

  • 增加数据的独立性 。 利用存储过程可以把数据库基础数据和程序(或用户)隔离开来。

  • 提高安全性(存储过程的权限设置,SQL执行的错误几率)

  • 提高性能(一次编译)如果是普通的SQL每次都需要编译

1.3 存储过程的语法

    语法格式:

create [or replace] procedure [schema.] procedure_name     [([parameter_name [in|out] datatype,[parameter_name [in|out] datatype]])] --参数列表in,out 数据类型不能有长度限制 可选操作(可以没有参数)     [v_name varchar2(50)] -- 声明部分,声明变量,数据类型加长度限制{is|as} --关键字begin --执行部分[exception]--例外(异常)end;

2. 存储过程的实例

2.1无参数的存储过程

实例1: 输出Hello PL/SQL

create or replace procedure helloPLSQLisbegin    dbms_output.put_line('Hello PL/SQL');end;

2.2 有参数的存储过程

实例2: 根据员工编号,更新员工工资

create or replace procedure update_empSal(       eNo number--员工编号       ,eSal number--新工资       )isbegin    update emp set sal=eSal where empno=eNo;--跟新操作    commit;--提交事务end;

2.3 带例外处理的存储过程

案例3: 根据员工编号,查找员工,输出员工姓名,可能该员工不存在。

create or replace procedure selByEmpNo_pro(       eNo number--员工编号       )isv_ename emp.ename%type;begin    select ename into v_ename from emp where empno=eNo;    dbms_output.put_line('雇员编号为:'||eNo||'的雇员名称为:'||v_ename);    exception      when no_data_found then        dbms_output.put_line('雇员编号为:'||eNo||'的雇员不存在');      when too_many_rows then        dbms_output.put_line('雇员编号为:'||eNo||'的雇员太多');end;

2.4 存储过程与函数的区别

Oracle中的函数与存储过程的区别: A:函数必须有返回值,而过程没有. B:函数可以单独执行.而过程必须通过execute执行. C:函数可以嵌入到SQL语句中执行.而过程不行. 其实我们可以将比较复杂的查询写成函数.然后到存储过程中去调用这些函数. Oracle中的函数与存储过程的特点: A. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 B.对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 C.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

2.5 存储过程的优点

转载于:https://my.oschina.net/KingPan/blog/310593

你可能感兴趣的文章
3.插入排序--直接插入排序
查看>>
UVA1584 UVALive3225 Circular Sequence
查看>>
StringBuffer
查看>>
Per-Pixel Lighting
查看>>
外部中断
查看>>
html的dtd声明
查看>>
ivy resolve标签
查看>>
.NET Web后台动态加载Css、JS 文件,换肤方案
查看>>
使用开源软件vlc media player 录制桌面视频
查看>>
web前端(2)—— 前端技术介绍
查看>>
ife2018 零基础学院 day 3
查看>>
Kali Linux信息收集之nbtscan-unixwiz
查看>>
hdu 5476 (计算几何)
查看>>
51 nod 1610 路径计数(Moblus+dp)
查看>>
通用报文解析服务的演进之路(基于磁盘目录的分布式消息消费者服务)之三...
查看>>
Js中分号使用总结
查看>>
读《从一到无穷大》
查看>>
zend studio 8 注册 码
查看>>
CentOS LAMP环境 配置详解
查看>>
任正非:华为为什么要坚持工业科学管理
查看>>