初始PLSQL

    科技2024-12-07  16

    初始PL/SQL

    PL/SQL 基本结构PL/SQL 标识符PL/SQL IF-THEN语句PL/SQL IF-THEN-ELSE语句PL/SQL IF-THEN-ELSE语句PL/SQL CASE语句PL/SQL LOOP语句PL/SQL WHILE语句PL/SQL FOR语句存储过程函数包和包体触发器

    PL/SQL 基本结构

    declare

    – 声明部分

    begin

    <executable command(s)> – 执行部分

    exception

    – 异常处理部分

    end;

    声明部分:包含变量、常量定义,由 declare 关键字开始,如果不声明变量,可以省略这部分

    执行部分:所有可执行 PL/SQL 语句放在这部分,由 begin 关键词开始, end 关键词结束,这部分不可省略,注意 end 后的分号

    异常处理部分:用 exception 关键词把可执行部分分成两个小部分,之前程序正常执行,一旦出现异常就跳转到异常部分执行

    PL/SQL 标识符

    变量声明 变量名 数据类型 [ not null ] [ := 初始值 ] | [ defacult 初始值 ] 常量声明 ----常量声明后不可再次赋值 变量名 constant 数据类型 [ not null ] [ := 初始值 ] | [ defacult 初始值 ]

    PL/SQL IF-THEN语句

    if 条件 then

    ----条件成立执行语句

    end if;

    PL/SQL IF-THEN-ELSE语句

    if 条件 then

    ----条件成立执行语句

    else

    ----条件不成立执行语句

    end if;

    PL/SQL IF-THEN-ELSE语句

    if 条件1 then

    ----条件1成立执行语句

    elseif 条件2 then

    ----条件2成立执行语句

    elseif 条件3 then

    ----条件3成立执行语句

    else

    ----条件1、2、3都不成立执行语句

    end if;

    PL/SQL CASE语句

    (如果选择器和表达式匹配就执行对应的执行语句,如果选择器与所有表达式都不匹配,就执行else后面执行语句)

    case 选择器

    when 表达式1 then 执行语句1;

    when 表达式2 then 执行语句2;

    when 表达式3 then 执行语句3;

    when 表达式4 then 执行语句4;

    else 执行语句;

    end case;

    PL/SQL LOOP语句

    (无限循环语句,如果不添加 exit where 语句 或者 exit 语句就是无限循环,exit 类似于 break)

    loop

    ----循环体

    ----[ exit where 退出循环条件 ]

    ----[ if … then

    exit;

    end if ]

    end loop;

    PL/SQL WHILE语句

    where 条件 loop

    ----循环体

    end loop;

    PL/SQL FOR语句

    (reverse表示从循环上限到下限循环)

    for 循环变量 in [ reverse ] 循环下限…循环上限 loop

    ----循环体

    end loop;

    存储过程

    创建存储过程:

    create [ or replace ] procedure 过程名称 [ ( 参数列表) ] { is | as }

    ----声明变量

    begin

    ----执行代码

    end [过程名称];

    例如:

    create or replace procedure p_hello is

    begin

    dbms_output.put_line(‘hello world’);

    end p_hello;

    调用存储过程:

    exec 存储过程名称 [ (参数) ]

    或者:

    execute 存储过程名称 [ (参数) ]

    或者:

    begin

    ----存储过程名称 [ (参数) ]

    end

    删除过程:

    drop procedure 过程名称

    函数

    创建函数:

    create [ or replace ] function 函数名称 [ (参数列表) ] return 返回值类型

    { is | as }

    ----声明变量

    begin

    ----执行代码

    end [函数名称];

    调用函数:

    declare

    ----创建变量存储函数调用返回值

    begin

    ----调用函数赋值给变量

    end;

    删除函数:

    drop function 函数名称

    包和包体

    创建包

    create [ or replace ] package 包名称 is | as

    ----定义公用常量、变量、过程、函数等(不能有具体实现)

    end [ 包名称 ];

    创建包体

    create [ or replace ] package body 包名称 is | as

    ----定义公用常量、变量、过程、函数等

    ----实现公用过程和函数

    end [ 包名称 ];

    调用包

    declare

    ----定义变量

    begin

    ----包名.元素名称(参数)

    end

    删除包或者包体

    drop package [ body ] [ user. ] 包名

    触发器

    创建触发器

    create [or replace] tigger 触发器名 { before | after } { insert | update | delete }

    on 表名 ---- 数据库触发器所在的表。

    [for each row] ---- 对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。

    begin

    ----pl/sql语句

    end

    删除触发器

    drop tigger 触发器名称

    触发器功能

    允许/限制对表的修改

    自动生成派生列,比如自增字段

    强制数据一致性

    提供审计和日志记录

    防止无效的事务处理

    启用复杂的业务逻辑

    Processed: 0.010, SQL: 8