• Oracle存储过程


    # 存储过程

      存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来调用存储过程。

      简单的说就是专门干一段sql语句,可以由数据库自己去调用,也可以由java程序去调用。在oracle数据库中存储过程是procedure。

    # 为什么要写存储过程

    1.效率高

    2.降低网络流量

      存储过程编译好会放在数据库,我们在远程调用时,不会传输大量的字符串类型的sql语句。

    3.复用性高

      存储过程往往是针对一个特定的功能编写的,当再需要完成这个特定的功能时,可以再次调用该存储过程。

    4.可维护性高

      当功能要求发生小的变化时,修改之前的存储过程比较容易,花费精力少。

    5.安全性高

      完成某个特定功能的存储过程一般只有特定的用户可以使用,具有使用身份限制,更安全。

    (1).基本结构

      Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常(可写可不写,要增强脚本的容错性和调试的方便性那就写上异常处理)

    (2).无参存储过程

    CREATE OR REPLACE PROCEDURE test AS/IS
        变量2 DATE;
        变量3 NUMBER;
    BEGIN
        --要处理的业务逻辑
        EXCEPTION    --存储过程异常
    END 

    调用:

    --方法一
    exec test();
    
    --方法二
    begin
      test();
    end;

    例子:

    (3).有参存储过程

      a.带参数的存储过程

    CREATE OR REPLACE PROCEDURE 存储过程名称(param1 student.id%TYPE)
    AS/IS
    name student.name%TYPE;
    age number :=20;
    BEGIN
      --业务处理.....
    END

      b.带参数的存储过程并且进行赋值

    CREATE OR REPLACE PROCEDURE 存储过程名称(
           s_no in varchar,
           s_name out varchar,
           s_age number) AS
    total NUMBER := 0;
    BEGIN
      SELECT COUNT(1) INTO total FROM student s WHERE s.age=s_age;
      dbms_output.put_line('符合该年龄的学生有'||total||'');
      EXCEPTION
        WHEN too_many_rows THEN 
        DBMS_OUTPUT.PUT_LINE('返回值多于1行'); 
    END
  • 相关阅读:
    让小车再飞一会儿 ——记校赛惨痛失败之旅
    排序算法之基数排序
    开博感言
    智能车 SCI实验
    三种算法求解一个数组的子数组最大和
    继续大话考研
    智能车实验室阶段测验之单片机基础
    怎样判断自己掌握了学到的新知识
    排序算法之计数排序
    进程与线程的区别?
  • 原文地址:https://www.cnblogs.com/wzhqzm/p/13573905.html
Copyright © 2020-2023  润新知