PLSQL编程基础.ppt

上传人:牧羊曲112 文档编号:5444138 上传时间:2023-07-07 格式:PPT 页数:39 大小:291.99KB
返回 下载 相关 举报
PLSQL编程基础.ppt_第1页
第1页 / 共39页
PLSQL编程基础.ppt_第2页
第2页 / 共39页
PLSQL编程基础.ppt_第3页
第3页 / 共39页
PLSQL编程基础.ppt_第4页
第4页 / 共39页
PLSQL编程基础.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《PLSQL编程基础.ppt》由会员分享,可在线阅读,更多相关《PLSQL编程基础.ppt(39页珍藏版)》请在三一办公上搜索。

1、第7章 PL/SQL编程基础,前面所学习的SQL是操作关系性数据库的一种通用语言,但是SQL本身是一种非过程化的语言,即不用指明执行的具体方法和途径,而是简单地调用相应语句直接取得结果即可。所以SQL本身并不适合在复杂的业务流程下使用,为了解决这一问题,Oracle提供了PL/SQL编程,这是一种过程化编程语言,与JAVA语言一样关注于处理细节,可以实现较为复杂的业务逻辑。,7.1 PL/SQL简介,PL/SQL语法结构,DECLARE-声明部分,例如:定义变量、常量、游标BEGIN-程序编写、SQL语句EXECEPTION-处理异常END;/,声明部分(DECLARE):包含变量定义、用户定

2、义的PL/SQL类型、游标、引用 的函数或过程。执行部分(BEGIN):包含变量赋值、对象初始化、条件结构、迭代结构、嵌套的PL/SQL块,或是对局部或者存储PL/SQL命名块的调用。异常部分(exception):包含错误处理语句,该语句可以像执行部分一样使用所有项。结束部分(END):程序执行到END表示结束,分号用户结束块,正斜杠(/)执行块程序,既没有变量,也没有流程控制(分支、循环)。,PL/SQL与SQL区别:,SQL,PL/SQL,PL/SQL是结构化和过程化的结合体。,每条SQL语句逐一发送给数据库。,一次性将多条SQL语言一起发送给数据库,7.1 PL/SQL简介,最简单的P

3、L/SQL块可以不做任何事情,但是在PL/SQL编程过程中要求,执行块至少要有一条语句,即使这条语句只是编写一个NULL也行。,范例:编写不做任何工作的PL/SQL块。,BEGIN NULL;END;/,范例:编写一个简单的PL/SQL程序,DECLAREv_num number;BEGIN v_num:=30;DBMS_output.put_line(v_num变量的内容是:|v_num);END;,7.1 PL/SQL简介,范例:编写PL/SQL块,输入一个雇员编号,而后取得指定的雇员姓名。,Declare v_eno number;v_ename varchar2(10);BeginV_

4、eno:=,7.1 PL/SQL简介,7.2 变量的声明与赋值,变量声明并使用变量:,变量名称可以有字母、数字、_、$、#等组成。,所有变量名称要求以字母开头,不能是Oracle中的保留字,变量的长度最多只能为30个字符,变量不区分大小写,7.2 变量的声明与赋值,声明变量语法:,变量名称 CONSTANT 类型 not NULL:=value,使用%TYPE声明变量类型:,在编写PL/SQL程序时,如果希望某一个变量与指定数据表中某一列的类型一样,则可以采用“变量定义”表名称.表名称%TYPE的格式,7.2 变量的声明与赋值,Declare v_eno emp.empno%type;v_en

5、ame emp.ename%type;Begin DBMS_output.put_line(请输入雇员编号:);v_eno:=,7.2 变量的声明与赋值,使用%ROWTYPE声明变量类型,PL/SQL提供了一种%ROWTYPE,使用此标记可以定义表中一行记录的类型。,当用户使用了“selectinto”将表中的一行记录设置为ROWTYPE类型的变量中时,就可以利用“rowtype 变量.表字段”的方式取得表中每行对应的列数据。,7.2 变量的声明与赋值,Declare v_deptrow dept%rowtype;-装载一行dept记录 Begin select*into v_deptrow

6、from dept where deptno=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,分支结构,判断条件,循环结构,分支结构,IF语句,分支结构,范例:查询emp表的工资。输入员工编号,根

7、据编号查询工资。如果工资高于3000元,则显示高工资;如果工资大于2000元则显示中等工资;如果小于2000元,则显示低工资。,DECLAREv_empSalemp.sal%TYPE;-定义变量与emp.sal字段类型相同v_empNameemp.ename%TYPE;-定义变量与emp.ename字段类型相同v_enoemp.empno%TYPE;-定义变量与emp.empno字段类型相同BEGINv_eno:=,分支结构,范例:用户输入一个雇员编号,根据它所在的部门给上涨工资,规则:10部门上涨10%,20上涨20%,30上涨30%;但是要求最高不能超过5000,超过5000就停留在500

8、0。,分支结构,分支结构,DECLAREv_empSalemp.sal%TYPE;-定义变量与emp.sal字段类型相同v_dnoemp.deptno%TYPE;-定义变量与emp.deptno字段类型相同v_enoemp.empno%TYPE;-定义变量与emp.empno字段类型相同BEGINv_eno:=,分支结构,CASE语句,Case语句是一种多条件的判断语句,其功能与IFelseifelse类似,Case语法:,Case变量 when 值|表达式 THEN 执行语句块;when 值|表达式 THEN 执行语句块;Else 条件都不满足时执行语块;End case,分支结构,范例:使

9、用CASE进行多条件判断,DECLAREv_salaryemp.sal%TYPE;v_enoemp.empno%TYPE;BEGINv_eno:=/,分支结构,范例:输入雇员编号,根据雇员的职位进行工资提升,提升要求如下 如果职位是办事员(CLERK),工资增长5%;如果职位是销售人员(SALESMAN),工资增长8%;如果职位为经理(MANAGER),工资增长10%;如果职位为分析员(ANALYST),工资增长20%;如果职位为总裁(PRESIDENT),工资不增长。,循环结构,在PL/SQL程序中,循环结构一共定义了两种,及LOOP循环和for循环。其中,LOOP主要使用在不确定循环次数的

10、操作中,而FOR使用在明确知道循环次数的操作中。,循环结构,For循环语法,FOR 循环索引 IN REVERSE 循环区域下限 循环区域上限LOOP循环执行的语句块;END LOOP;,循环结构,范例:使用LOOP循环,DECLAREv_i NUMBER:=1;-定义一个变量,用于循环BEGINLOOPDBMS_OUTPUT.put_line(v_i=|v_i);EXIT WHEN v_i=3;v_i:=v_i+1;END LOOP;END;,循环结构,范例:使用WHILELOOP循环,DECLAREv_i NUMBER:=1;-定义一个变量,用于循环BEGINWHILE(v_i=3)LOO

11、PDBMS_OUTPUT.put_line(v_i=|v_i);v_i:=v_i+1;END LOOP;END;,循环结构,范例:使用FOR循环,DECLAREv_i NUMBER:=1;-定义一个变量,用于循环BEGINFOR v_i IN 1.3 LOOPDBMS_OUTPUT.put_line(v_i=|v_i);END LOOP;END;,循环结构,循环控制,在正常循环操作中,如果需要结束循环或者退出当前循环,可以使用EXIT与CONTINUE语句来完成。,范例:使用EXIT结束循环操作,DECLAREv_i NUMBER:=1;-定义一个变量,用于循环BEGINFOR v_i IN

12、1.10 LOOPIF v_i=3 THEN-当v_i变量增长到3时结束循环EXIT;END IF;DBMS_OUTPUT.put_line(v_i=|v_i);END LOOP;END;,循环结构,循环控制,范例:使用CONTINUE控制循环操作,DECLAREv_i NUMBER:=1;-定义一个变量,用于循环BEGINFOR v_i IN 1.10 LOOPIF MOD(v_i,2)=0 THEN-为偶数的时候不执行后续方法体CONTINUE;END IF;DBMS_OUTPUT.put_line(v_i=|v_i);END LOOP;END;,7.5 内部程序块,对每个PL/SQL程序

13、块,其基本的组成部分就是DECLARE、BEGIN、END,如果用户有需要,也可以在一个程序中定义多个子程序模块,语法如下:,DECLARE-声明部分,例如定义变量、常量、游标BEGIN-程序编写、SQL语句;DECLARE-子程序编写、SQL语句EXCEPTION-子程序处理异常 END;EXCEPTION-异常处理END;,7.5 内部程序块,范例:定义内部程序块,DECLAREv_xNUMBER:=30;-此为全局变量BEGINDECLAREv_x VARCHAR2(40):=MLDNJAVA;-此为局部变量,-只能在内部程序块中使用v_yNUMBER:=20;BEGINDBMS_OUT

14、PUT.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 异常类型|用户定义异常|异常代码|OTH

15、ERS THEN异常处理;,在一个EXCEPTION语句块中可以同时编写多个WHEN,用于判断不同的异常类型。异常可以是系统定义的,也可以用户自定义的异常类型。,7.6 异常处理,常见预定义异常,7.6 异常处理,范例:处理SQL异常 找不到数据,DECLAREv_enoemp.empno%TYPE;v_enameemp.ename%TYPE;BEGINv_eno:=,7.6 异常处理,用户自定义异常:,范例:使用用户定义异常,DECLAREv_dataNUMBER;v_myexpEXCEPTION;BEGINv_data:=,7.6 异常处理,DECLAREv_dnodept.deptno%TYPE;-部门编号v_dnadept.dname%TYPE;-部门名称v_dlocdept.loc%TYPE;-部门位置v_deptCountNUMBER;-保存COUNT()函数结果BEGINv_dno:=,范例:使用PL/SQL增加部门信息,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号