Oracle数据库——PL/SQL编程

PL/SQL块基本结构

declare

<declarations section> -- 声明部分

begin

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

exception

<exception handling> -- 异常处理部分

end;

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

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

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

PL/SQL标识符

类型

分隔符

描述

赋值运算符

:=

赋值

算数运算符

+ , - ,  * ,  /

加法,减法/负,乘法,除法

**

指数,乘方运算

关系运算符

< ,  > ,  <= ,  >=

小于,大于,小于等于,大于等于

<> ,  '= ,  ~= ,  ^=

不同版本的”不等于”运算符

连接运算符

||

连接字符串

比较运算符

like , (not) in , (not) is null

模糊匹配,是否存在,是否为空

between ... and ...

范围(包括两端)

逻辑运算符

and , or , not 

与,或,非

变量声明

变量名 数据类型 [ 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 触发器名称

触发器功能

  1. 允许/限制对表的修改

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

  3. 强制数据一致性

  4. 提供审计和日志记录

  5. 防止无效的事务处理

  6. 启用复杂的业务逻辑

猜你喜欢

转载自blog.csdn.net/NONINETEEN/article/details/82952714