1.存储过程定义

储存程序 (Stored Procedure),又可称预储程序或者存储过程,是一种在数据库中存储复杂程序,
以便外部程序调用的一种数据库对象,它可以视为数据库中的一种函数或子程序。--维基百科

存储子程序是指被命名的PL/SQL 块,以编译的形式存储在数据库服务器中,可以在应用程序中进行调用,是PL/SQL程序模块化的一种体现。Pl/SQL中的存储子程序包括存储过程和(存储)函数两种。通常存储过程用于执行特定的操作,不需要返回值;而函数则用于返回特定的数据。在调用时,存储过程可以作为一个独立的表达式被调用,而甘肃只能作为表达式的一个组成部分被调用。

2.优点

模块化:将程序分解为逻辑模块

可重用性:可以被任意程序调用

可维护性:简化维护操作

安全性: 用户无需直接访问表,分装起来

提高性能:减少网络流量,直接传输存储过程名和参数

过程是用于完成特定任务的子程序

实例

1.编写存储过程无参数

 CREATE
OR REPLACE PROCEDURE proc_show_emp (
p_deptno EMPLOYEES.DEPARTMENT_ID % TYPE
) AS v_sal EMPLOYEES.SALARY % TYPE ;
BEGIN
SELECT
AVG (salary) INTO v_sal
FROM
employees
WHERE
department_id = p_deptno ; dbms_output.put_line (
p_deptno || 'average salary is :' || v_sal
) ; FOR v_emp IN (
SELECT
*
FROM
employees
WHERE
department_id = p_deptno
AND salary > v_sal
) loop DBMS_OUTPUT.PUT_LINE (
v_emp.employee_id || '' || v_emp.first_name || ' ' || v_emp.last_name
) ;
END loop ; EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE ('ehhhee') ;
END proc_show_emp ;

2.编写存储过程*(有参数)

 CREATE
OR REPLACE PROCEDURE proc_return_deptinfo (
p_deptno EMPLOYEES.DEPARTMENT_ID % TYPE,
p_avgsal out employees.salary % TYPE,
p_count out NUMBER
) AS
BEGIN
SELECT
AVG (salary) ,count (*) INTO p_avgsal,
p_count
FROM
employees
WHERE
department_id = p_deptno ; EXCEPTION
WHEN NO_data_found THEN
dbms_output.put_line ('hahhaha') ;
END proc_return_deptinfo ;

3.pl/sql调用存储过程

 SET SERVEROUTPUT ON
DECLARE
v_avgsal EMPLOYEES.SALARY % TYPE ;
v_count NUMBER ;
BEGIN
proc_show_emp (20) ;
PROC_RETURN_DEPTINFO (10, v_avgsal, v_count) ;
dbms_output.put_line (v_avgsal || ' ' || v_count) ;
END ;

环境oracle11R2 默认HR

oracle存储过程的更多相关文章

  1. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

  2. Oracle存储过程语法

    原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程  1 CREATE OR REPLACE PROCEDURE 存储过程名  ...

  3. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  4. Oracle存储过程基本语法介绍

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  5. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  6. Oracle存储过程(转)

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  7. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  8. Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER

    关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...

  9. ORACLE存储过程学习

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

  10. C# 获取 oracle 存储过程的 返回值1

    /// <summary> /// 返回对应表的模拟自增字段值 /// </summary> /// <param name="tablename"& ...

随机推荐

  1. wnmp环境搭建

    windows下配置nginx+php环境 刚看到nginx这个词,我很好奇它的读法(engine x),我的直译是“引擎x”,一般引“擎代”表了性能,而“x”大多出现是表示“xtras(额外的效果) ...

  2. php设计模式总结-工厂模式

    使用工厂模式的目的或目标? 工厂模式的最大优点在于创建对象上面,就是把创建对象的过程封装起来,这样随时可以产生一个新的对象.减少代码进行复制粘帖,耦合关系重,牵一发动其他部分代码. 通俗的说,以前创建 ...

  3. Linux(九)__网络测试

    1.确认ip地址.子网掩码.网关是正确的. ifconfig 2.确认局域网是互通的,访问别人的电脑.网关 ping 发送数据包接收数据包,设备是否联通 /etc/sysconfig/network- ...

  4. safari cookie设置中文失败

    最近用H5进行手机端开发,由于是window操作系统,为了方便开发和调试,直接在chrome浏览器上进行测试,然后在android机上进行手机端测试,当功能基本完工后,原来在android上运行正常的 ...

  5. 炫酷的html5(Drag 和 drop)拖放

    在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放.也是一种常见的特性,即抓取对象以后拖到另一个位置. 浏览器支持 Internet Explorer 9.Firefox.Opera 12.C ...

  6. Lucene提供的条件判断查询

    第一.按词条搜索 - TermQuery query = new TermQuery(new Term("name","word1"));hits = sear ...

  7. Ubuntu搭建NFS

    NFS全称是Network File System,网络文件系统.它可以通过网络实现文件共享.其结构图大概是这样的: 在机器E上开启NFS服务,机器ABCD都挂载NFS,这样可以实现机器ABCD共享文 ...

  8. AngularJS 系列 01 - HelloWorld和数据绑定

    目录导读: AngularJS 系列 学习笔记 目录篇 前言: 好记性不如烂键盘,随笔就是随手笔记,希望以后有用. 本篇目录: 1. Hello World 2. AngularJS中的数据绑定 3. ...

  9. [转载】——故障排除:Shared Pool优化和Library Cache Latch冲突优化 (文档 ID 1523934.1)

    原文链接:https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrlstate=23w4l35u5_4&id=152393 ...

  10. oracle调用JAVA类的方法

    导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了,  1.操作系统需要拥有支持loadjava命令的jdk.  2.加 ...