4.3.1 存储过程的简要介绍
1、什么是存储过程?
存储过程是一种命名的PL/SQL代码块。它既可以没有参数,也可以有若干输入、输出参数,甚至可以有多个既作输入又作输出的参数,但他通常没有返回值。
存储过程被保存在数据库中,不可被SQL语句直接执行或调用,只能通过EXECUTE命令执行或在PL/SQL程序块内部被调用。由于存储过程是已编译好的代码,所以被调用或引用时,执行效率非常高。
2、存储过程的大体结构?
与普通的PL/SQL程序块相似,包括声明、执行、异常处理三个部分。
新建一个存储过程,输入存储过程名称后,默认生成代码:
create procedure PRO_DETAIL:创建一个名为PRO_DETAIL的存储过程;
or replace:如果PRO_DETAIL已经存在,则用现有代码覆盖原有存储过程;
Name in out type:参数的格式,应为参数名、输入或输出用in或out表示、参数类型(不能指定长度);
begin…end之间光标所在处:为需编写的PL/SQL语句,是存储过程功能实现的主体;异常处理语句也在这里,是可选项。
3、创建一个简单的存储过程,并调用执行?
练习需求:创建一个存储过程,实现向cj_t_dept表中插入一条记录。
a. 操作步骤和编写语句如图:
操作说明(练习使用的是PL/SQL):
- 在当前用户下点击“新建程序窗口-procedure”,在弹窗输入程序名称,参数(无参数可将默认内容删除),点击确认;
- 在生成代码中,begin和end范围内,编写INERT语句,COMMIT语句,DBMS_OUTPUT显示;
- 点击“运行”,编译存储过程,若报错,根据报错内容进行调整;代码正确后会在页面下方提示“编译成功”,这时在左侧的procedures下可以看到该存储过程;
- 保存存储过程为prc文件,需点击保存按钮另存为prc文件。
b1. 调用编写好的存储过程,步骤如图:
操作说明:上图是使用的“测试”功能执行,会自动生成测试代码,下方可输入参数,点击执行即可。另外一种执行方法,直接在SQL界面编写代码,点击执行,如下图:
在“输出”界面可以看到输出语句内容:
b2. 在SQL *Plus下调用存储过程:
execute pro_instodetail;
4、如何删除存储过程?
当一个过程不再被使用,需要将其从内存中删除,以释放相应的内存空间。
使用方法:DROP PROCEDURE PRO_INSTODETAIL;