Oracle 存储过程
存储过程概述
存储过程(Stored Procedure )是一组为了完成特定功能的SQL语句
集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数
(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要
对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后
存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,
若干个有联系的过程可以组合在一起构成程序包。
优点:
存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
存储过程可以重复使用,可减少数据库开发人员的工作量。
安全性高,可设定只有某用户才具有对指定存储过程的使用权。
创建
定义存储过程语法:
create [or replace] procedure pro_name[(
parameter1 [{in|out|inout}] datatype1,
parameter2 [{in|out|inout}] datatype2,
parameter3 [{in|out|inout}] datatype3,
...
)]
{is|as}
[descriptionpart说明部分]
begin
sql statement语句序列
[exception 异常处理]
end [pro_name];
注解:
1.or replace : 是一个可选的关键字,建议用户
使用此关键字。如果过程已经存在,该关键字将重新
创建过程,这样就不必删除和重新创建过程。
2.{is | as}: 关键字is 和as均可,它们本身没什么区别,
is 后面是一个完整的 PL/SQL块, 可以定义局部变量,
但不能从 declare 开始。 局部变量在存储过程内部存放
值。
3.[{in|out|inout}]: 形式参数,如果没有写,则默认为in
in 表示输入参数; out 表示输出参数; inout ...;
创建一个存储过程例子:
1.创建第一个存储过程, 打印 HelloWorld;
create or replace procedure pro_test
as
begin
dbms_output.put_line('HelloWorld');
end;
注意在PL/SQL 的命令窗口中 需添加 “/” 回车,表示输入完成,可以直接执行
2.使用
在命令窗口直接
SQL> set serveroutput on
SQL> execute pro_test;
在SQL窗口使用
declare
begin
pro_test;
end;
创建的存储过程视图: