oracle学习笔记
🌕 🌕 🌕
存储过程,函数,视图 , 包…
子程序
一.什么是子程序
1). 子程序是指被命名的PL/SQL块,这种块可以有参数,可以在不同应用中多次调用。
2). 子程序是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用中多次调用
3). PL/SQL有两种类型的子程序:过程和函数
存储过程
一.存储过程特点
存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指
定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
存储过程是由流程控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,若干个有联系的过程可以
组合在一起构成程序包。
二.存储过程优点:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一
次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行CRUD时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。减少与java的交互
3.存储过程可以重复使用,可减少数据库开发人员的工作量。
4.安全性高,可设定只有某用户才具有对指定存储过程的使用权。
三.存储过程基本语法结构
1 | -- 请写出存储过程基本语法结构 |
四.Oracle中的几种存储过程
- 无参不能有小括号,有参必须加括号
- 括号中参数不能有长度
- IN可以省略,OUT可以赋值
- IN OUT: 可输入,可输出
1).无参存储过程
1 | --创建无参存储过程:输出7499号的 部门编号 |
2).入参存储过程
1 | --创建入参存储过程:输入员工编号,输出部门编号 |
3).出参存储过程
1 | --创建出参存储过程:入参员工编号,出参部门编号 |
4).出入参存储过程
1 | --创建存储过程:入参员工编号,出参部门编号,v_param作为出入参 |
五.多参数传递时的传递方式
位置传递,参数名传递,组合传递
- 存储过程,函数都可用
- 位置传参必须在名字传参前面
1 | --参数传递形式 |
函数
一.函数的特点
函数用于返回特定数据(函数最大的特点),一定有返回值。
如果在应用程序中经常需要通过执行SQL语句来返回特定数据,
则可以基于这些操作创建特定的函数。
二.函数基本语法结构
1 | -- 请写出函数基本语法结构 |
三.Oracle中的几种函数
1).无参函数
1 | select ceil(4.2) from dual--ceil取整 |
2).入参函数
1 | --入参函数:输入员工编号,返回部门名称 |
3).入参,出参函数
1 | --出参函数,两个参数函数:输入员工编号,返回部门名称,部门地址 |
4).输入输出参数
1 | --输入输出参数 |
四.函数和存储过程的区别
存储过程:执行特定操作
函数:返回特定数据
不同点:1.调用方式不同;2.函数一定有返回结果,过程没有返回结果
相同点:1.都包含输入和输出参数
过程和函数的比较:
Ø 相同的功能及特性
1、都使用IN模式的参数传入数据、OUT模式的参数返回数据。
2、输入参数都可以接收默认值,都可以传值。
3、调用时的实参都可以使用位置表示法或名称表示法。
4、都有声明部分、执行部分和异常处理部分。
Ø 用法区别
1、一般而言,如果需要返回多个值或不返回值,就使用过程。
2、如果只需要返回一个值,就使用函数。
3、虽然函数带OUT模式的参数也能返回多个值,但是一般都认为这种方法属于不好的编程习惯或风格。
4、过程一般用于执行一个指定的动作,函数一般用于计算和返回一个值。
视图
一.视图的特点
- 视图:是个虚表,查询结果使用频率较高时,可以将查询结果定为一个视图
二.视图的基本语法结构
1 | CREATE OR REPLACE VIEW v_a(视图名) |
三.视图的种类
1).单表视图
1 | --例:将员工编号,姓名定义为一张视图 |
2).联表视图
1 | --连表视图 |
包
一.包的特点
包就是组合一系列逻辑操作,将函数,存储过程等对象组织起来,为了方便代码程序的管理。
包规范:接口,定义
包体:实现类,实现包规范中定义的内容
创建包时,需要先创建包头,再创建包体
包的特点:
Ø 包(Package)用于组合逻辑相关的PL/SQL类型、PL/SQL项和PL/SQL子程序。
Ø 通过使用PL/SQL包,不仅可以简化应用设计,提高应用性能,还可以实现信息隐藏、子程序重载等功能。
Ø 包由包规范和包体两部分组成。
Ø 当创建包时,需要首先创建包规范,然后再创建包体。(包规范类似接口,包体类似接口的实现)
在包里声明的是共有的,在包体里声明的都是私有的,私有的只能在包中使用,共有的可以在外部使用(包名.)
二.包的基本语法结构
- 包体必须实现包规范中定义的内容;
- 包体中可以直接使用包规范中定义的变量/常量;
- 包规范中定义的内容是公开的,可以包体中或外部进行调用
- 包体中可以包含变量,常量,函数,过程,pl/sql,游标,私有的,外部不能访问
- 包体中可以相互调用,调用包体中定义的私有的内容必须在调用前先声明;
1 | -- 请写出创建包规范和包体的基本语法 |
三.包的几种用法
1).共有属性
1 | --调整部门30的员工工资为最高工资 写一个存储过程调整薪资,写一个函数获取最高工资 |
2).私有属性
1 | --私有属性只能在本包调用 |
练习一
1 | /*练习一*/ |
练习二
1 | /*练习二*/ |
- 本文作者:
腾飞
- 本文链接:
https://www.tengfei.eu.org/article/c58dc7f0.html
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!