PL/SQL 存储过程学习

基本语法

  1. 语法:
    1
    2
    3
    4
    5
    CREATE
    OR REPLACE PROCEDURE 存储过程名 IS
    BEGIN
    NULL;
    END;
  2. 解释:
  • CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个存储过程, 如果存在就覆盖它
  • IS关键词表明后面将跟随一个PL/SQL体
  • BEGIN关键词表明PL/SQL体的开始
  • NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句
  • END关键词表明PL/SQL体的结束
  1. 示例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    CREATE OR REPLACE PROCEDURE 存储过程名(param1 IN type,param2 OUT type
    AS 变量1 类型(值范围); -- vs_msg VARCHAR2 (4000);
    变量2 类型(值范围);
    BEGIN
    SELECT
    count(*) INTO 变量1
    FROM
    表A where列名 = param1;
    IF (判断条件) THEN
    SELECT
    列名 INTO 变量2
    FROM
    表A where列名 = param1;
    Dbms_output.Put_line (‘打印信息’);
    Elsif (判断条件) THEN
    Dbms_output.Put_line (‘打印信息’);
    ELSE
    Raise 异常名(NO_DATA_FOUND);
    END IF;
    Exception
    WHEN others THEN
    ROLLBACK;
    END;
  2. 注意:
    • 存储过程参数不带取值范围,in表示传入,out表示输出类型可以使用任意Oracle中的合法类型
    • 变量带取值范围,后面接分号
    • 在判断语句前最好先用count(*)函数判断是否存在该条操作记录
    • 用select 。。。into。。。给变量赋值
    • 在代码中抛异常用 raise+异常名

优点

  1. 存储过程存放在数据库服务器中,而且是已经编译好的,又在服务器端执行,执行效率高
  2. 存储过程把逻辑固化,隐藏数据,增加了数据安全性
  3. 存储过程增加了程序开发的灵活性和模块化
  4. 同一,存储过程存储在服务器端,且在服务器端执行,减少了网络通信量
查看评论