首页 > 数据库 >Oracle数据库,笔录!

Oracle数据库,笔录!

时间:2022-11-14 11:11:09浏览次数:36  
标签:... end name -- 数据库 笔录 循环 Oracle loop

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

标签:...,end,name,--,数据库,笔录,循环,Oracle,loop
From: https://www.cnblogs.com/nguyenLu/p/16888384.html

相关文章

  • 第三章 关系数据库标准语言SQL
    3.1SQL概述(略)3.2学生-课程数据库3.3数据定义数据库>模式>表、视图和索引一个数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模......
  • 数据库索引:索引并不是万能药
    几乎所有的业务项目都会涉及数据存储,虽然当前各种NoSQL和文件系统大行其道,但MySQL等关系型数据库因为满足ACID、可靠性高、对开发友好等特点,仍然最常被用于存储重要数据。在......
  • 数据库为空白不为空引起的异常
    数据库中存在空白的字符,我用获取字段的,逗号分割去处理数据报错了转换异常。getPaticipants.split(",");//这里执行也是空白1@Test2publicstaticvoidmain(Strin......
  • 数据库Migration Tools详解
    简述MigrationTools是一个能帮你自动执行、管理和校验SQL脚本的工具。常见的Tools有Flyway、Liquibase、MybatisMigrations这里我们介绍Flyway的使用基......
  • mybatis中mapper文件中---数据库表字段与实体类属性的映射
    普通映射:<resultMapid="唯一标识"type="com.gao.entity.MyDemo"><!--主属性--><idcolumn="数据库主键字段名"property="实体类"/><......
  • 2022.11.10_查询泸州老窖的订单信息,访问泸州那边,然后将数据写到,我这边的数据库,然
    track_no:原始单号|expresses:订单表========================新添加的东西[接口interface]==================下单API:查询老窖运单&并下单【Get】......
  • rqlite 基于sqlite 的轻量级分布式关系数据库
    rqlite是基于sqlite做为存储的分布式关系数据库,对于分布式处理基于了raft协议包含的特性部署简单使用简单,包含了httpapi以及,命令行接口,以及clientsdk完整企业级......
  • KingbaseES数据库目录结构
    KingbaseES数据库目录结构[kingbase@postgresV8]$tree-LP2data/.├──data│├──base#存储用户创建的数据库文件及隶属于用户数据......
  • 数据加密 - 数据库隐私字段组件
    数据加密概述加密:将明文信息改变为难以读取的密文内容。解密:将密文内容转化为原来数据。分类对称加密:加密与解密密钥相同。非对称加密:加密使用公钥,公钥可公开;解密......
  • MySQL数据库连接参数
    数据库连接参数driver-class-name:com.mysql.cj.jdbc.Driver//&serverTimezone=GMT%2B8连接使用的时区,一般是MySQL8+版本使用的url:jdbc:mysql://localhost:3306/......