oracle存储过程
时间:2020-05-29
本文章向大家介绍oracle存储过程,主要包括oracle存储过程使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、语法结构
create
[
or
replace
]
procedure
过程名 --or replace 如果存储过程已经存在则覆盖替代原有的过程
( p1
in
|
out
datatype, ----入参和出参两种参数
p2
in
|
out
datatype, ---datatype表示出入参变量对应的数据类型
...
pn
in
|
out
datatype
)
is
....
--过程当中使用到的声明变量
begin
....
--存储过程的具体操作
end
;
2、例子:调用存储过程来获取学生对应的课程成绩排名
create
or
replace
procedure
sp_score_pm(
p_in_stuid
in
varchar2,
--学号
p_in_courseid
in
varchar2,
--课程ID
p_out_pm
out
number
--排名
)
is
ls_score number:=0;
ls_pm number:=0;
begin
--获取该学生的成绩
select
t.score
into
ls_score
from
score t
where
t.stuid = p_in_stuid
and
t.courseid = p_in_courseid;
--获取成绩比该学生高的人数
select
count
(1)
into
ls_pm
from
score t
where
t.courseid = p_in_courseid
and
t.score>ls_score;
--得到该学生的成绩排名
p_out_pm:=ls_pm+1;
exception
when
no_data_found
then
dbms_output.put_line(
'该学生的课程:'
||p_in_courseid||
'的成绩在成绩表中找不到'
);
end
;
3、优点
1、降低总体开发成本。存储过程把执行的业务逻辑PL/SQL块和多条SQL语句封装到存储过程,只需要调用写好的过程,获取想要的结果 。
2、增加数据的独立性。它的作用和视图的作用类似,假如表的基础数据发生变化,我们只需要修改过程当中的代码,而不需要修改调用程序。
3、提高性能。 一个功能的开发可能需要多个SQL语句,多个PL/SQL程序块 ,使用存储过程,Oracle只需一次编译,随时可以调用。 如果直接把许多SQL语句写进程序当中,需要多次编译,多次连接数据库。
原文地址:https://www.cnblogs.com/diandixingyun/p/12986482.html
- Golang语言切片slice的线程协程安全问题
- ASP.NET Core 在 Azure 开启 HTTPS
- 算法基础:最大递减数问题(Golang实现)
- 亲身经历的痛--database/sql: Stmt的使用以及坑
- Ubuntu上通过nginx部署Django笔记
- Go学习笔记:golang交叉编译
- Python魔术方法-Magic Method
- python类中super()和__init__()的区别
- Python正则表达式:最短匹配
- 转--Go时间格式化和类型互换操作
- Python标准库(1) — itertools模块
- Linux笔记:使用Vim编辑器
- 一步一步学lucene——(第二步:示例篇)
- 类属性的延迟计算
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法