PLSQL编程基础.ppt_第1页
PLSQL编程基础.ppt_第2页
PLSQL编程基础.ppt_第3页
PLSQL编程基础.ppt_第4页
PLSQL编程基础.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章PL SQL编程基础 前面所学习的SQL是操作关系性数据库的一种通用语言 但是SQL本身是一种非过程化的语言 即不用指明执行的具体方法和途径 而是简单地调用相应语句直接取得结果即可 所以SQL本身并不适合在复杂的业务流程下使用 为了解决这一问题 Oracle提供了PL SQL编程 这是一种过程化编程语言 与JAVA语言一样关注于处理细节 可以实现较为复杂的业务逻辑 7 1PL SQL简介 PL SQL语法结构 DECLARE 声明部分 例如 定义变量 常量 游标BEGIN 程序编写 SQL语句EXECEPTION 处理异常END 声明部分 DECLARE 包含变量定义 用户定义的PL SQL类型 游标 引用的函数或过程 执行部分 BEGIN 包含变量赋值 对象初始化 条件结构 迭代结构 嵌套的PL SQL块 或是对局部或者存储PL SQL命名块的调用 异常部分 exception 包含错误处理语句 该语句可以像执行部分一样使用所有项 结束部分 END 程序执行到END表示结束 分号用户结束块 正斜杠 执行块程序 既没有变量 也没有流程控制 分支 循环 PL SQL与SQL区别 SQL PL SQL PL SQL是结构化和过程化的结合体 每条SQL语句逐一发送给数据库 一次性将多条SQL语言一起发送给数据库 7 1PL SQL简介 最简单的PL SQL块可以不做任何事情 但是在PL SQL编程过程中要求 执行块至少要有一条语句 即使这条语句只是编写一个NULL也行 范例 编写不做任何工作的PL SQL块 BEGINNULL END 范例 编写一个简单的PL SQL程序 DECLAREv numnumber BEGINv num 30 DBMS output put line v num变量的内容是 v num END 7 1PL SQL简介 范例 编写PL SQL块 输入一个雇员编号 而后取得指定的雇员姓名 Declarev enonumber v enamevarchar2 10 BeginV eno 7 1PL SQL简介 7 2变量的声明与赋值 变量声明并使用变量 变量名称可以有字母 数字 等组成 所有变量名称要求以字母开头 不能是Oracle中的保留字 变量的长度最多只能为30个字符 变量不区分大小写 7 2变量的声明与赋值 声明变量语法 变量名称 CONSTANT 类型 notNULL value 使用 TYPE声明变量类型 在编写PL SQL程序时 如果希望某一个变量与指定数据表中某一列的类型一样 则可以采用 变量定义 表名称 表名称 TYPE的格式 7 2变量的声明与赋值 Declarev enoemp empno type v enameemp ename type BeginDBMS output put line 请输入雇员编号 v eno 7 2变量的声明与赋值 使用 ROWTYPE声明变量类型 PL SQL提供了一种 ROWTYPE 使用此标记可以定义表中一行记录的类型 当用户使用了 select into 将表中的一行记录设置为ROWTYPE类型的变量中时 就可以利用 rowtype变量 表字段 的方式取得表中每行对应的列数据 7 2变量的声明与赋值 Declarev deptrowdept rowtype 装载一行dept记录Beginselect intov deptrowfromdeptwheredeptno 10 DBMS output put line 部门编号 v deptrow deptno 名称 v deptrow dname 位置 v deptrow loc End 7 3标量类型 数值型 标量类型 字符型 日期型 大对象 布尔 7 3标量类型 7 3标量类型 7 3标量类型 7 3标量类型 7 4程序结构 PL SQL程序与其他编程语言一样 也拥有自己的3中程序结构 即顺序结构 分支结构 循环结构 顺序结构 语句1 分支结构 判断条件 循环结构 7 4 1分支结构 IF语句 7 4 1分支结构 范例 查询emp表的工资 输入员工编号 根据编号查询工资 如果工资高于3000元 则显示高工资 如果工资大于2000元则显示中等工资 如果小于2000元 则显示低工资 DECLAREv empSalemp sal TYPE 定义变量与emp sal字段类型相同v empNameemp ename TYPE 定义变量与emp ename字段类型相同v enoemp empno TYPE 定义变量与emp empno字段类型相同BEGINv eno 7 4 1分支结构 范例 用户输入一个雇员编号 根据它所在的部门给上涨工资 规则 10部门上涨10 20上涨20 30上涨30 但是要求最高不能超过5000 超过5000就停留在5000 7 4 1分支结构 7 4 1分支结构 DECLAREv empSalemp sal TYPE 定义变量与emp sal字段类型相同v dnoemp deptno TYPE 定义变量与emp deptno字段类型相同v enoemp empno TYPE 定义变量与emp empno字段类型相同BEGINv eno 7 4 1分支结构 CASE语句 Case语句是一种多条件的判断语句 其功能与IF elseif else类似 Case语法 Case 变量 when 值 表达式 THEN执行语句块 when 值 表达式 THEN执行语句块 Else条件都不满足时执行语块 Endcase 7 4 1分支结构 范例 使用CASE进行多条件判断 DECLAREv salaryemp sal TYPE v enoemp empno TYPE BEGINv eno 7 4 1分支结构 范例 输入雇员编号 根据雇员的职位进行工资提升 提升要求如下 如果职位是办事员 CLERK 工资增长5 如果职位是销售人员 SALESMAN 工资增长8 如果职位为经理 MANAGER 工资增长10 如果职位为分析员 ANALYST 工资增长20 如果职位为总裁 PRESIDENT 工资不增长 7 4 2循环结构 在PL SQL程序中 循环结构一共定义了两种 及LOOP循环和for循环 其中 LOOP主要使用在不确定循环次数的操作中 而FOR使用在明确知道循环次数的操作中 7 4 2循环结构 For循环语法 FOR循环索引IN REVERSE 循环区域下限 循环区域上限LOOP循环执行的语句块 ENDLOOP 7 4 2循环结构 范例 使用LOOP循环 DECLAREv iNUMBER 1 定义一个变量 用于循环BEGINLOOPDBMS OUTPUT put line v i v i EXITWHENv i 3 v i v i 1 ENDLOOP END 7 4 2循环结构 范例 使用WHILE LOOP循环 DECLAREv iNUMBER 1 定义一个变量 用于循环BEGINWHILE v i 3 LOOPDBMS OUTPUT put line v i v i v i v i 1 ENDLOOP END 7 4 2循环结构 范例 使用FOR循环 DECLAREv iNUMBER 1 定义一个变量 用于循环BEGINFORv iIN1 3LOOPDBMS OUTPUT put line v i v i ENDLOOP END 7 4 2循环结构 循环控制 在正常循环操作中 如果需要结束循环或者退出当前循环 可以使用EXIT与CONTINUE语句来完成 范例 使用EXIT结束循环操作 DECLAREv iNUMBER 1 定义一个变量 用于循环BEGINFORv iIN1 10LOOPIFv i 3THEN 当v i变量增长到3时结束循环EXIT ENDIF DBMS OUTPUT put line v i v i ENDLOOP END 7 4 2循环结构 循环控制 范例 使用CONTINUE控制循环操作 DECLAREv iNUMBER 1 定义一个变量 用于循环BEGINFORv iIN1 10LOOPIFMOD v i 2 0THEN 为偶数的时候不执行后续方法体CONTINUE ENDIF DBMS OUTPUT put line v i v i ENDLOOP END 7 5内部程序块 对每个PL SQL程序块 其基本的组成部分就是DECLARE BEGIN END 如果用户有需要 也可以在一个程序中定义多个子程序模块 语法如下 DECLARE 声明部分 例如定义变量 常量 游标BEGIN 程序编写 SQL语句 DECLARE 子程序编写 SQL语句EXCEPTION 子程序处理异常END EXCEPTION 异常处理END 7 5内部程序块 范例 定义内部程序块 DECLAREv xNUMBER 30 此为全局变量BEGINDECLAREv xVARCHAR2 40 MLDNJAVA 此为局部变量 只能在内部程序块中使用v yNUMBER 20 BEGINDBMS OUTPUT put line 内部程序块输出 v x v x DBMS OUTPUT put line 内部程序块输出 v y v y END DBMS OUTPUT put line 外部程序块输出 v x v x END 7 6异常处理 程序开发中会由于设计错误 编码错误 硬件故障或其他原因奇异程序运行出错 PL SQL中的异常处理机制 使得在出现错误的时候程序仍能执行 异常类型 编译型异常 程序语法出现错误导致的异常 运行型异常 程序语法没有语法错误 但因为程序运算或者返回结果而出现错误 7 6异常处理 异常处理语法 WHEN异常类型 用户定义异常 异常代码 OTHERSTHEN异常处理 在一个EXCEPTION语句块中可以同时编写多个WHEN 用于判断不同的异常类型 异常可以是系统定义的 也可以用户自定义的异常类型 7 6异常处理 常见预定义异常 7 6异常处理 范例 处理SQL异常 找不到数据 DECLAREv enoemp empno TYPE v enameemp ename TYPE BEGINv eno 7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论