Oracle数据库,PL/SQL编程笔录

PL/SQL:

  是Oracle对SQL语言过程的程序化拓展

  基本语法结构:

[declare
    ...声明变量]
begin
     ...程序块
    [Exception
         ...异常处理]
end;    
=====================
--异常部分
exception
  when 异常类型 then
    异常处理逻辑:一般把异常信息写入log表中

变量的语法

  变量名  类型(长度)【类型可以直接写成表名.列名%type 或者记录型表名%rowtype】;

  赋值: 变量名 := 变量值    (快速冲数据中提取数据 可以使用select 列名 into 变量名 from 表名 where 条件)

条件判断

if 条件1 then
    ...业务逻辑1
elsif 条件2 then
    ...业务逻辑2
else
    ...业务逻辑3
end if;

循环-无条件循环-条件循环-for循环

--无条件循环
loop 
    ...循环语句
    [exit when 条件]
end loop;
--这种会进入死循环,一般加上限制条件 exit when 条件

--条件循环
while 条件
    loop
        ...循环语句
    end loop;

--for循环,也是比较常用的一种循环
for [] in ...
    loop
        ...循环语句
    end loop;

游标

  是系统为用户开设的一个数据缓冲区,存放SQL查询的一个结果集

--在声明区声明游标
cursor cur_name is sql语句
--使用游标语法
   open cur_name
        loop
            fetch cur_name into 变量
            exit cur_name%notfound
        end loop;
    cose cur_name
 --for循环可以简化,就不需要open cose fetch exit了哟

存储函数

  一般再多表关联可以使用存储函数

create [or replace] function fn_name
    (
    参数名 参数类型,
    参数名 参数类型
    ...)
is
    [变量声明]
begin
    ...业务逻辑
    return 结果变量
  [excelption
    ...异常处理]
end;

存储过程

create [or replace] procedure pr_name
     (  参数名 类型,
        参数名 类型,
        参数名 类型)
as
    ...变量声明
begin
    ...业务逻辑
    [exception
        ...异常处理]
end;
--参数的三种模式
    --IN  传入参数(默认)
    --OUT 传出参数,主要用于返回程序运行结果
    --IN OUT 传入传出参数
--调用存储过程
  方式一
  begin
   pr_name()
  end;
方式二
 call pr_name();

触发器

  自动执行的“存储过程”,会被Oracle自动调用

  用于数据确认,实施复杂的安全检查、做审计、跟踪表上的数据操作,数据的备份和同步

  分类:前置触发器(before)\ 后置触发器(after)

create [or replace] trigger tr_name
befare | after 
[delete][[or] insert][[or] update [of 列名]] --在做什么操作触发,列名可以用逗号隔开
on table_name
[for each row][where 条件] --for each row行级触发器 where 返回false true
declare
    ...声明
begin
   ...程序块
end;

  伪记录变量  :old  :new

触发语句 :old :new
insert 所有字段都是null 将要插入的数据
update 更新以前该行的值 更新后的值
delete 删除以前该行的值 所有字段都是null

原文地址:http://www.cnblogs.com/nguyenLu/p/16888384.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性