Oracle Procedure存储过程简介
来源:互联网 发布:linux 查看用户状态 编辑:程序博客网 时间:2024/05/01 00:33
在Oracle中,可以在数据库中定义子程序,这种程序块称为存储过程(Procedure)。它存放在数据字典中,可以在不同用户和应用程序之间共享,可实现程序的优化和重用。使用存储过程的优点是:
(1) 过程在服务器端运行,执行速度快;
(2) 过程执行一次后代码就驻留在高速缓冲存储器中,在以后的操作中,只需从高速缓冲存储器中调用已编译代码执行即可,可以提高系统性能。
(3) 确保数据库的安全。可以不授权用户直接访问应用程序中的一些表,而是授权用户执行访问这些表的过程。非表的授权用户除非通过过程,否则就不能访问这些表。
(4) 自动完成需要预先执行的任务。过程可以在系统启动时自动执行,而不必在系统启动后再进行手工操作,可以自动完成一些需要预先执行的任务。
1、SQL命令创建Procedure:
语法格式:
CREATE [OR REPLACE] PROCEDURE [schema.]procedure_name
[(parameter parameter_mode data_type,…n)]
IS|AS
BEGIN
Sql_statement
END procedure_name
说明:
(1) procedure_name:过程名,必须符合标示符规则。关键字REPLACE表示在创建过程时,如果已存在同名的过程,则重新创建。如果使用CREATE关键字,则需将原有的过程删除后才能创建。
(2) schema:指定过程所属的用户方案;
(3) parameter:过程的参数。创建过程时,可以声明一个或多个参数,执行过程时应提供相对应的参数。Parameter_mode是参数的类型,过程参数和函数参数一样,也有3种类型,分别为IN、OUT和INOUT。
① IN:表示参数是输入给过程的。
② OUT:表示参数在过程中被赋值,可以传给过程体的外部。
③ INOUT:表示该类型的参数既可以向过程体传值,也可以在过程体中赋值;
(4) sql_statement:代表过程体包含的PL/SQL语句。
2、调用存储过程
直接输入存储过程的名字就可以执行一个已定义的存储过程。
语法格式: [EXECUTE]procedure_name[(parameter,…n)]
以下举例说明:
如要经常执行插入,Oracle每次都要进行编译,并判断语法正确性,因此执行速度可想而知,
--所以我们要创建一个过程来实现
CREATE OR REPLACE PROCEDURE AddNewUser
(
n_id user_info.id%TYPE,
n_name user_info.name%TYPE,
n_pwd user_info.pwd%TYPE,
n_address user_info.address%TYPE
)
AS
BEGIN
--向表中插入数据
INSERT INTO user_info(id,name,pwd,address)
VALUES(n_id,n_name,n_pwd,n_address);
END AddNewUser;
/
--下面我们利用PL/SQL匿名块调用该过程
DECLARE
--描述新用户的变量
v_id user_info.id%TYPE := 'u002';
v_name user_info.name%TYPE := 'wish';
v_pwd user_info.pwd%TYPE := 'history';
v_add user_info.address%TYPE := 'shanghai';
BEGIN
--调用过程,添加wish用户到数据库
AddNewUser(v_id,v_name,v_pwd,v_add);
DBMS_OUTPUT.PUT_LINE('用户 ' || v_name || ' 已经成功插入');
END;
/
--或者可以利用EXEC()直接插入
EXEC AddNewUser('u003','jian','jian','beijing');
--或
EXECUTE AddNewUser('u004','zhang','zhang','beijing');
- Oracle Procedure存储过程简介
- oracle procedure 存储过程
- oracle PROCEDURE 存储过程
- Oracle Procedure 存储过程
- Oracle procedure--存储过程
- oracle PROCEDURE 存储过程
- oracle存储过程(procedure)
- oracle 存储过程 PROCEDURE和 FUNCTION区别:
- Oracle 存储过程 procedure 失效 分析
- Oracle job procedure 存储过程定时任务
- Oracle job procedure 存储过程定时任务
- 【初识Oracle】⑩存储过程 PROCEDURE
- Oracle job procedure 存储过程定时任务
- Oracle job procedure 存储过程定时任务
- Oracle job procedure 存储过程定时任务
- Oracle job procedure 存储过程定时任务
- Oracle job procedure 存储过程定时任务
- [Procedure]Oracle之分页存储过程
- Dom4j的使用
- 轻松通过系分论文考试
- SSH整合中 hibernate托管给Spring得到SessionFactory
- 工作以后十不要 减少奋斗30年
- 什么是超文本(Hypertext:HT)
- Oracle Procedure存储过程简介
- C/C++数组名与指针区别深入探索【zz】
- Java程序执行超时——Future接口介绍
- JavaScript中的类型(2011/7/14)
- java 程序员之路
- bcp sybase sqlserver 数据的导入和导出
- 维修电脑内存的几个问题
- webservice的原理及概念
- MySQL恢复和UTF文件BOM标志读取问题