存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
优点:效率高,复用性强,安全性高
存储过程的结构:oracle的存储过程包含三部分:过程声明,执行过程部分,存储过程异常(可省略)。
接下来我们来详细讲述一下存储过程
存储过程的语法
create:创建 关键字
or replace: 如果此名称的存储过程已经创建了,那么用这两个关键字可以替换同名的存储过程,不用会报错,可以省略。
procedure:存储过程 意思是创建的是一个存储过程
pro_name: 存储过程的名称。
(参数): 存储过程的参数,可以省略,有参的存储过程在写参数的时候要指定参数的数据类型。
as: 也可以写成is。
plsql_sentences: pl/sql语句,他是存储过程功能实现的主体。
dowith_sentences: 异常处理语句,也是pl/sql语句,可以省略。
1 create [or replace] procedure pro_name (参数) as 2 begin 3 plsql_sentences; 4 [exception] 5 [dowith_sentences;] 6 end pro_name;
存储过程的学习
存储过程的创建(pl/sql)
首先打开plsql软件,在左侧找到procedures文件夹,里面的就是你的存储过程,在上面右键--新建--输入存储过程的名字和参数(名字在里面也可以改,参数可以暂时不管)
无参存储过程
上面的介绍对于一些初学者可能不那么好理解,那么我们先用一个例子来让大家认识一下存储过程。
首先我们在oracle中创建一个表(表名T_USER)表结构如下
例子:写一个无参存储过程,向t_user表中添加一条数据。
1 create or replace procedure test1 as 2 begin 3 insert into t_user values('1','张三',22,1,'13718770909',sysdate); 4 commit; 5 end test1;
要注意:test1为存储过程的名字,commit意思是提交事务,end后面跟的一定是存储过程的名字。
有参存储过程
那么通过上面的例子我们就基本知道了无参存储过程的大概。那么接下来让我们看看有参存储过程是怎么写的。
首先我们先介绍一下存储过程的参数
存储过程可以接受多个参数,参数模式包括三种:
in:输入类型 默认 不可修改 可以省略
out:输出类型 只能等待被赋值 不可省略
in out:兼顾上面两种 不可省略 不建议使用这种,如果遇到这种情况,完全可以拆开成两个参数
例子:写一个有参的存储过程,向t_user表中添加一条数据。要求插入的数据都要用参数传递过来的数据。
1 create or replace procedure test2(id varchar2,name varchar2,age number,sex number,tel varchar2,create_time date) is 2 begin 3 insert into t_user values (id,name,age,sex,tel,create_time); 4 commit; 5 end test2;
要注意:test2为存储过程的名称,每个参数要表明类型,但是不能指定长度,参数的名称可以随便起。
存储过程的检查
一个存储过程在创建之后,需要我们验证一下语法是否正确,方法是点击下图的执行按钮(齿轮) 如果最下面出现了编译成功,那么说明此存储过程语法上没有问题。如果有报错,就根据提示信息进行修改即可。
存储过程的调用
写好的存储过程,在oracle中怎么调用呢?
首先打开一个sql操作页面(文件--新建-sql窗口),根据我们所写的存储过程的参数,可以使用call关键字进行调用
比如上面两个例子(test1,test2),他们的调用方法分别为
1 --无参调用方法 2 call test1() 3 --有参调用方法 4 call test2('11','张三',11,0,'13567667897',sysdate)
存储过程的删除
当一个存储过程不再被需要的时候,要将此过程从内存中删除,以释放相应的内存空间,方法一共有两种
1. 语句删除L:drop procedure test1 //test1是存储过程的名称
2. 使用pl/sql工具,直接在左侧的procedures文件夹中找到那个存储过程文件,右键删除即可。
存储过程的调试
在左侧的procedures文件夹中找到你要调试的存储过程文件,右键选择测试,之后按下图操作
上面的红框中的五个按钮 从左到右分别为:运行,单步进入(重要),单步跳过,单步退出,运行到下一个异常,一般我们只用到单步进入就可以了。
操作顺序为:点击运行按钮,之后一步步点击单步进入按钮即可。
特别注意:我们在存储过程中可以写dbms_output.put_line('ok'); 括号中的ok为参数 类似于java里的System.out.println("ok"); 可以在DBMS输出中看到
接下来会继续更新存储过程中的一些其他的知识及技巧和用法。