1 / 43

《ORACLE》

《ORACLE》. 学习情境 11 PLSQL 语言( 8 学时). 计算机技术与软件工程学院 胡斌. PL/SQL. PL/SQL 是具有控制语句的数据查询语句,编写的脚本文件中的程序称为存储过程,被 ORACLE 调用。 1.PL/SQL 简述 7.% TYPE 2. 结构 8.游标 3. 编程基础 9.集合 4. 访问数据库 10.异常 5. 过程和函数 11.程序类型 6. 记录类型 12.触发器. 1. 简述. PL/SQL 代表 Procedural Language/SQL(Procedural Language: 过程语言)

Download Presentation

《ORACLE》

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 《ORACLE》 学习情境11 PLSQL语言(8学时) 计算机技术与软件工程学院 胡斌

  2. PL/SQL • PL/SQL是具有控制语句的数据查询语句,编写的脚本文件中的程序称为存储过程,被ORACLE调用。 • 1.PL/SQL简述7.%TYPE • 2.结构8.游标 • 3.编程基础9.集合 • 4.访问数据库10.异常 • 5.过程和函数11.程序类型 • 6.记录类型12.触发器

  3. 1.简述 • PL/SQL 代表 Procedural Language/SQL(Procedural Language:过程语言) • 它是对 SQL 的扩展 • PL/SQL 中存在过程构造和数据库访问 • 在 Oracle 服务器和客户机应用程序中使用 • 支持大型对象和集合

  4. 1.简述 • 字符集:英文字母,数字,符号。 • 运算符:表3-1,表3-2。 • PL/SQL代表面向过程化的语言与SQL语言的结合,在编写PL/SQL代码时可以在SQL语句中使用: • (1)变量和类型 • (2)控制语句 • (3)过程和函数 • (4)对象类型和方法

  5. 1.简述 • 支持对象类型和集合 • 调用外部函数和过程 • 支持 SQL • 支持 OOP • 更高生产率 • 更佳性能 • 可移植性 • 与 Oracle 集成在一起 • 严密的安全性

  6. ORACLE 服务器 主程序或 ORACLE 工具 PL/SQL 引擎 过程语句执行器 匿名 PL/SQL 块 匿名 PL/SQL 块 过程语句 SQL语句 SQL 语句执行器 2.结构

  7. 2.结构 • PL/SQL 引擎是主要组件,它驻留在 Oracle 服务器中 • PL/SQL 引擎 • 处理 PL/SQL 块并将其分离为 SQL 语句及过程语句 • 将过程语句发送到过程语句执行器以进行处理 • 将 SQL 语句发送到 SQL 语句执行器以进行处理

  8. 2.结构 • PL/SQL语言实现了将过程结构与Oracle SQL的无缝集成 • 例:修改一个学生的专业,如果没有该学生,就插入一个新的记录 • PL/SQL程序都是以块(block)为基本单位。 DECLARE 变量、常量、游标、自定义异常 BEGIN SQL语句 PL/SQL控制语句 EXCEPTION 错误发生时执行的动作 END;

  9. 2.结构 • Declaration,声明部分定义变量等,至begin结束,为可选部分。 • Body,程序体包含具体查询语句,由begin至exception或end结束,为必须部分。 • Exception,异常处理针对某个语句出错时的处理语句,为可选语句。 • 注释为/*……*/,或者--。

  10. 2.结构 • 它包括一组语句 • PL/SQL 程序中的基本单元 • 将相关的声明和语句进行逻辑分组 • 声明对于块是局部的 • 在块完成之后,将超出范围

  11. 2.结构 • PL/SQL 的各个组成部分 • 声明部分 • 可执行部分 • 异常处理部分 • PL/SQL 块的结构 • DECLARE • declarations • BEGIN • executable statements • EXCEPTION • handlers • END; • 其中,declarations是声明,executablestatements是可执行语句,handlers是处理程序。

  12. 数据类型 • 内置数据类型 • 标量 • 复合 • 引用 • LOB

  13. 数据类型 • 标量 • 容纳单个值 • 没有内部组成 • 分为四个类别: • NUMBER • CHARACTER • DATE • BOOLEAN

  14. 数据类型 • Number 类型 • 用于存储和操纵数字数据 • Number 类型是: • BINARY_INTEGER • NUMBER • 子类型是DEC、DECIMAL、DOUBLE PRECISION、FLOAT、INTEGER、INT、NUMERIC、REAL、SMALLINT • PLS_INTEGER

  15. 数据类型 • Character 类型 • CHAR • VARCHAR2 • RAW • LONG 和 LONG RAW • ROWID 和 UROWID • 区域字符类型 • NCHAR • NVARCHAR2

  16. 数据类型 • Datetime 和 Interval 类型 • DATE • TIMESTAMP • TIMESTAMP WITH TIME ZONE • TIMESTAMP WITH LOCAL TIME ZONE • INTERVAL YEAR TO MONTH • INTERVAL DAY TO SECOND

  17. 数据类型 • BOOLEAN 类型 • 用于存储逻辑值(TRUE、FALSE 和 NULL) • 不接受任何参数 • 不能向数据库中插入 BOOLEAN 数据 • 不能将列值提取或选择到 BOOLEAN 变量中 • 只允许对 BOOLEAN 变量执行逻辑操作

  18. 数据类型 • 组合类型 • RECORD • VARRAY • NESTED TABLE • LOB 类型 • BLOB • CLOB • NCLOB • BFILE

  19. 数据类型 • 属性 • 引用数据库中的数据类型和对象 • PL/SQL 变量和常量可以具有属性 • 属性的类型 • %type–引用数据库列 • %rowtype–代表表中的行

  20. 3.编程基础-变量 • 在大多数PL/SQL块中,都需要使用变量来包含在程序逻辑中使用的值。无论需要什么类型的变量,能够在BEGIN部分中使用它之前,都必须在块的DECLARE段中声明这些变量。 • 声明变量必须提供变量名称和数据类型。 • 变量名称遵循以下约定: 以一个字母字符开头,最多包含30个字符,不能有空格和关键字,可以包含大写和小写字母、数字以及_、$、#及其它特殊字符 • 表3-3,数据类型

  21. 变量 • 数据的临时存储 • 在声明部分中声明 • 可以在 SQL 语句和过程语句中使用 • 在可执行部分中赋予新值 • 使用变量的优点 • 可重用性 • 易于维护

  22. 变量 • 结束符号“/”。 • 设置SERVEROUTPUT参数,DBMS_OUTPUT.PUT_LINE是输出语句。 • 变量声明时,每行只能声明一个变量。 • 赋值使用“:=”

  23. 3.编程基础-控制结构 • If语句的五个规则。注意“;”的使用。 • Case语句的关键字,表达式和语句用法。 • Loop循环的四种形式。 • For循环。

  24. 控制结构 • 控制流语句 • 条件控制 • 迭代控制 • 顺序控制 • 条件控制 • 基于条件执行语句 • 类型:if then、if then else、if then elsif 和 CASE 语句

  25. 控制结构 • 迭代控制 • 简单循环 • WHILE 循环 • FOR 循环 • 顺序控制 • GOTO 语句 • NULL 语句

  26. 逻辑比较 • PL/SQL 支持 SQL 和 PL/SQL 中变量和常量的比较(称为“布尔表达式”) • 布尔表达式的类型有: • 数值型 • 字符型 • 日期型

  27. 逻辑比较 • 数值型布尔表达式 • 比较数值 • 下表说明这一点:

  28. 运算符 含义 示例 = 等于 name = ‘MARK’ != 不等于 product != ‘computer’ < 按字母顺序排在其前 name1 < name2 > 按字母顺序排在其后 name1 > name2 <= 按字母顺序排在其前或等于 name2 <= name3 >= 按字母顺序排在其后或等于 name3 >= name4 逻辑比较 • 字符型布尔表达式 • 比较用引号括起来的序列或单个字符 • 下表说明这一点:

  29. 运算符 含义 示例 = 等于 Odate = ‘12-Jan-74’ != 不等于 Odate != ’14 – Feb - 88’ < 早于 Odate < ’19 – Jun - 88’ > 晚于 Odate > ’30 – jun - 77’ <= 早于或等于 next_day(odate, 6)<= ‘1-Jan-97’ >= 晚于或等于 odate >= ‘25-DEC-67’ 逻辑比较 • 日期型布尔表达式 • 比较两个日期 • 下表说明这一点:

  30. 4.访问数据库 • 不能使用create等更改数据库结构的sql语句,只能操作数据。 • 程序块中可以加入SQL语句! • 变量进行赋值,select…into…为变量赋值。 • 表的引用

  31. 5.过程和函数 • 过程(procedure)是执行某个操作的子程序; • 函数(function)是求值并返回到调用的程序。 • 参数:in,out,inout。位置表示法和命名表示法(可以不按顺序)。有默认值的可以省略。 • 函数需要定义返回值类型,需要return语句返回结果。

  32. 6.记录类型-用户自定义类型 • 记录类型是表的镜像,类似结构体。 • 记录变量的单个字段用点表示法。 • 记录变量可以作为参数。 • 参与表达式,组成SQL语句。

  33. 7.%TYPE • %TYPE引用表的字段类型,自动处理字段数据类型。 • %ROWTYPE引用整个表的所有字段。

  34. 8.游标(cursor) • 游标是一个sql语句的工作区。有隐式和显式游标。适合处理多行结果查询。 • 声明和使用游标。 • 游标for循环的简化用法。 • 游标可以有参数,对查询结果进行限定。 • 处理游标结果的当前行。

  35. 9.集合(collection) • 嵌套表类型。 • 集合方法。紧凑和稀疏的概念。 • 可变数组。

  36. 10.异常处理 • 预定义异常表3-6 • 用户自定义异常。 • 用RAISE引发用户定义的异常。 • RAISE_APPLICATION_ERROR返回错误号。 • WHEN OTHERS处理没有指定的异常。 • SQLCODE SQLERRM返回错误号和消息。

  37. 错误处理 • PL/SQL 中的错误条件称为异常 • 有两种类型的异常: • 预定义的 • 用户定义的 • 当在 PL/SQL 程序中出现错误时,将引发异常 • 在出现错误时,正常执行将停止,控制权转移到异常处理部分

  38. 错误处理 • 预定义的异常 • PL/SQL 程序违反 Oracle 规则时,将隐式引发它 • 用户定义的异常 • 由 raise 语句显式引发 • 只能在 PL/SQL 块的声明部分中声明

  39. 11.程序类型 • 匿名块 • 过程和函数以命名的模式对象存储就是存储过程。

  40. 12.触发器 • 当数据库中发生某些特定事件时,会自动执行的过程,没有参数。

  41. 总结 • PL/SQL 代表 procedural language/SQL(procedural language:过程语言) • PL/SQL 是一种块结构的语言 • 将 SQL 的数据操纵功能与过程语言的数据处理功能结合在一起 • 允许我们使用所有 SQL DML、TCL、SQL 函数和运算符 • PL/SQL 引擎执行 PL/SQL 块 • PL/SQL 支持所有 SQL 数据类型和 ANSI 标准类型

  42. 总结 • PL/SQL 块的三个组成部分是:声明部分、可执行部分和异常处理部分 • 变量和常量是在声明部分中声明的 • LOB 类型用于存储大型对象 • 属性用于引用数据库中的数据类型和对象 • 支持对变量和常量进行比较 • 布尔表达式的三种类型是 - 数值型、字符型和日期型

  43. 总结 • 控制结构的三种类型是 - 条件控制、迭代控制、顺序控制 • IF 语句的三种形式是 -IF THEN、IF THEN ELSE、IF THEN ELSIF • LOOP 可用于多次执行语句 • GOTO 语句用于无条件地转移到一个标签位置 • PL/SQL 中的错误条件称为异常

More Related