Oracle存储过程的示例与讲解

存储过程是将sql和流程控制编程语句结合在一起,使得其可以将复杂的业务逻辑封装在一起,仅对外暴露参数即可。我们可以将存储过程类比为函数。

接下来我们一起来学习下如何在Oracle上创建存储过程。

首先我们建一张样表:

create table TEACHER( TNO VARCHAR2(10) not null, TNAME VARCHAR2(20))

接下来我们分析下存储过程的语法:

定义:CREATE [OR REPLACE] PROCEDURE [(参数列表)] IS[局部变量声明] BEGIN 可执行语句EXCEPTION 异常处理语句 END [];

其中中括号里面的内容为可选选项。学过Java的同学都知道,这语法结构是不是和java的函数有点类似。参数,处理逻辑,异常机制。

接下来我们来实战下:

任务:写一个存储过程,往TEACHER表 插入张老师的信息。

create or replace procedure insert_teacher isbegin insert into teacher values('t005','振华'); commit; dbms_output.put_line('插入新纪录成功!');end insert_teacher;

其中 dbms_output.put_line() 为Oracle的输出语句,类似于java的System.out.println()语句。

commit为事务的提交,因为Oracle的插入操作先是将数据保存在缓存区中,提交后才插入数据库。

将以上存储过程执行一遍:

注意,重点来了。我们执行了存储过程,显示的是编译compiled successfully 即编译成功。既然是编译,那就是没有执行。我们去对应的表中查看下有没有数据就知道了。

select * from teacher

可以看到空空如也!

所以这里要强调一个知识点:存储过程是已经被编译好的代码,在调用或引用时,只需传入参数,无参可不传,所以其执行效率非常高。

接下来我们演示下执行以及查看下执行效果。

我们打开SQL Plus,在windows左侧的oracle目录路径下即可找到

输入执行命令:

exec insert_teacher

箭头指向的“插入新记录成功“ 就是我们的dbms_output.put_line()语句。但是我们必须开启记录打印,不然它是默认不显示的。

set serverout on

执行上诉语句,日志记录就会输出了。

现在我们来看下数据库的记录有没有插入

select * from teacher

可以看到已经有一条我们插入的记录了。大功告成!

接下来我们总结下:

要点:因为存储过程是已经被编译好的代码,在调用或引用时,其执行效率非常高。

语法:

CREATE [OR REPLACE] PROCEDURE [(参数列表)] IS [局部变量声明] BEGIN 可执行语句 EXCEPTION 异常处理语句 END [];

欲穷千里目,更上一层楼!祝大家学业有成!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200413A0U91O00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券