PL/SQL编程

PL/SQL基础知识

  • 什么是PL/SQL编程
  • PL/SQL(过程编程/SQL)是结合了oracle过程语言和结构化查询语言的一种拓展语言。
  • PL/SQL的优点

1.具有编程语言的特点,他能把一组SQL语句放到一个模块中,使去更具有模块的程序的特点
2.采用过程性语言控制程序的结构,也就是说,在PL/SQL中增强逻辑结构,如循环,判断等程序结构
3.PL/SQL可以对程序中的错误进行自动处理,使程序能够在遇到错误时不会中断,及他的处理异常机制
4.具有更好的可移植性,可以移植到另一个Oracle数据库中
5.减少网络的交互,提高程序性能。

  • PL/SQL的组成
  • 一个PL/SQL块有三部分组成,即声明部分,执行部分,异常处理部分
    【DECLARE】
    ——声明部分:在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数
    BEGIN
    ——执行部分:过程及SQL语言,即程序的主要部分
    【EXCEPTION】
    ——异常处理部分:错误处理
    END;
  • 变量和常量的声明
    语法:
    variable_name data_type[(size)][:=init_value];
    variable_name 表示变量的名称
    data_type表示变量的SQL或PL/SQL数据类型
    size指定变量的范围
    init_value指变量的初始值
  • PL/SQL数据类型
    1.标量数据类型
    包含单个值,没有内部组件。标量数据类型包括数字,字符,布尔值和日期时间值4类
    与Oracle数据库的数据类型的区别:(1).同样类型的大小不同(2).增加了布尔类型
    2.LOB数据类型
    Oracle提供了LOB(large Object)类型,用于存储大的数据对象的类型。Oracle目前主要支持BFILE,BLOB,CLOB,及BCLOB类型。
    3.属性类型

属性用于引用变量或数据库列的数据类型。以及表示表中一行的记录类型
(1).%TYPE
定义一个变量,其数据类型与一定定义的某个数据变量(尤其是标的某一类)的数据类型相一致
(2).%ROWTYPE
返回一个记录类型,其数据类型和数据库表的数据结构相一致,这时可以使用%ROWTYPE

  • PL/SQL控制语句
    1.条件控制
    (1). if语句语法如下
    语句一: IF-THEN
   IF 条件 THEN
            执行语句
   END IF;

语句二: IF-THEN-ELSE

IF 条件 THEN
  执行语句
ELSE
  执行其他语句
END IF;

语句三: IF-THEN-ELSIF

IF 条件1 THEN
      执行语句1
ELSIF 条件2 THEN
      执行语句2
ELSE
      执行其他语句
END IF;

(2).case条件语法如下
语句一:

CASE 条件表达式
  WHEN 条件表达式结果 1 THEN 语句段 1;

  WHEN 条件表达式结果2 THEN  语句段2;
   
  WHEN 条件表达式结果 N THEN 语句段N;
  
  ELSE STATEMENT N+1;
 END CASE;

语句二:

CASE 条件表达式
  WHEN 条件表达式 1 THEN 语句段 1;

  WHEN 条件表达式2 THEN  语句段2;
   
  WHEN 条件表达式 N THEN 语句段N;
  
  ELSE STATEMENT N+1;
 END CASE;

2.循环控制
循环公有三种类型:loop循环,while循环和for循环
(1)loop循环:

LOOP 
要执行的语句;
EXiT WHEN <条件语句>        --条件满足,退出循环
END LOOP;

(2).WHILE循环语法

  WHILE <布尔表达式> LOOP
  要执行的语句;
  END LOOP;

(3).FOR循环语法

FOR 循环技术器 IN 【REVERSE】 下限  ...  上限 LOOP
END LOOP;

3.顺序控制
按顺序执行语句。包括NULL语句和GOTO语句。

游标

  • 游标的基本原理
在oracle中,在执行一个有增删改查语句的PL/SQL块时,oracle会在内存中为其分配一个缓冲区,将执行结果放在这个缓冲区中。而游标是指向该区的一个时针。
  • 游标的分类
静态游标和动态游标,静态游标又分为两种,即隐式游标额显示游标
  1. 显示游标
    (1) 声明游标
    CURSOR cursor_name [(parameter [, parameter]…)]
    [RETURN return_type] IS select_statement;
    cursor_name 指游标的名称
    parameter 为游标输入指定参数,在指定数据类型,不能长度约束
    (2).打开游标
    OPEN cursor_name[(parameters)];
    (3).提取游标
    FETCH cursor_name INTO variables;
    variables指的是变量名
    (4).关闭游标
    CLOSE curso_name;
  2. 显示游标属性

%FOUND :只在DML语句影响一行或多行时,
%FOUND属性才返回TRUE。
%NOTFOUND :与·%FOUND相反
%ROWCOUNT:返回DML影响的行数,没有的话返回0; %ISOPEN:返回游标是否打开

3.使用显示游标删除或更新
CURSOR cursor_naem IS select_statement FOR UPDATE [OF columns]
4.使用循环游标简化游标的读取
FOR record_index IN cursor_name LOOP executable_statements END LOOP;
5.NO_DATA_FOUND 和%NOTFOUND 的区别

(1).select … into 语句返回0条和多条记录时触发NO_DATA_FOUND
(2).当UPDATE或DELETE语句的WHERE字句未找到时,触发%NOTFOUND
(3).在提取循环中%NOTFOUND或%FOUND来确定循环的退出条件,而不用NO_DATA_FOUND

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值