• Oracle学习笔记二十二:存储过程


    一、存储过程简介

    • 存储过程(Stored Procedure)是一组为了完成特定功能的PL/SQL语句块,经编译后存储在数据库中。

    • 存储过程经编译和SQL优化后存储在数据库服务器中,使用时只要调用即可。

    • 存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

    • 用户通过指定存储过程的名字给出参数(如果该存储过程带有参数)来执行它。

    二、存储过程分类

    1)系统存储过程

      • 系统存储过程就是由Oracle预先提供的一组完成特定功能的存储过程,安装完Oracle就有了。

    2)自定义存储过程

      • 自定义存储过程就是存在Oracle数据库里由一组PL/SQL语句组成的自定义过程(Procedure)。它可以供其它Oracle自定义存储过程、自定义函数和Job调用或者由客户端程序调用。

    三、存储过程语法

    • 定义存储过程的语法:

      CREATE [OR REPLACE] PROCEDURE 存储过程名

        [(参数名1 [参数模式] 参数数据类型1,参数名2 [参数模式] 参数数据类型2)]

      IS [AS]

        [变量 [constant] 类型 [默认值]]

      BEGIN

        PL/SQL 语句块;

      END 存储过程名;

    四、无参存储过程

    1)定义无参存储过程

    create or replace procedure PrintToday
    is
    begin
        dbms_output.put_line(sysdate);
    end;

    2)执行无参存储过程

    begin
        PrintToday();
    end;

    五、存储过程参数

    • 建立存储过程时,既可以指定存储过程的参数,也可以不提供任何参数。

    • 存储过程的参数主要有三种类型:输入参数(IN)、输出参数(OUT)、输入输出参数(IN OUT),其中IN用于接收调用环境的输入参数,OUT用于输出数据传递到调用环境,IN OUT不仅要接收数据,而且要输出数据到调用环境。

    • 在建立存储过程时,输入参数的IN可以省略。

    • 注意:当定义存储过程的参数时,只能指定数据类型,不能指定数据长度。

    六、有参存储过程

    6.1、带输入参数存储过程

    1)定义带输入参数存储过程

    create or replace procedure InsertEmp
    (
        p_empno varchar2,
        p_ename varchar2
    )
    is
    begin
        insert into emp (empno,ename) values (p_empno,p_ename);
        commit;
    end;

    2)执行带输入参数存储过程

    begin
        InsertEmp ('1004','Green');
    end;

    6.2、带输出参数存储过程

    1)定义带输出参数存储过程

    create or replace procedure CountEmp
    (
        p_ename in varchar2,
        out_value out number
    )
    is
    begin
        select count(1) into out_value from emp where ename=p_ename;
    end;

    2)执行带输出参数存储过程

    declare
        out_value number;
    begin
        CountEmp ('James',out_value);
        dbms_output.put_line(out_value);
    end;

    七、维护存储过程

    • 修改存储过程

      • 与创建的语法相同,使用REPLACE替换即可。

    • 删除存储过程

      • drop procedure [schema.]过程名

  • 相关阅读:
    性能优化之_android多线程
    bootstrap搜索样式
    bootstrap模态框通过传值解决重复提交问题
    web请求乱码问题总结
    jsp页面自动换行
    cron表达式
    js中简单操作
    文件上传(前端)
    viz.js操作流程
    graphviz.js划线操作
  • 原文地址:https://www.cnblogs.com/atomy/p/16344769.html
Copyright © 2020-2023  润新知