数据库培训-PLSQL课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库培训-PLSQL课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 培训 PLSQL 课件
- 资源描述:
-
1、1数据库培训PL/SQL基础电信网通BU2007年05月2培训内容 PL/SQL程序结构 基本语法要素 流程控制 事务处理 游标 异常处理 存储过程和函数 程序包 触发器3PL/SQL程序结构PL/SQL:过程化SQL语言 PL/SQL块语法 DECLARE-declaration statements BEGIN-executable statements EXCEPTION-exception statements END 4基本语法要素 常量 变量 符合数据类型变量 表达式 函数 ODS变量命名规范5常量 语句格式:常量名常量名 CONSTANT 类型标识符类型标识符 not null:
2、=值值;例:avc_acct_id CONSTANT VARCHAR2(5)NOT NULL:=AP001;6变量语句格式 变量名变量名 类型标识符类型标识符 not null:=值值;例:avc_serv_id VARCHAR2(5)NOT NULL:=SV001;基本数据类型 number int char()varchar()varchar2()long date boolean:ture false null 7复合数据类型变量 使用type%定义变量 avc_no dept.deptno%type;定义记录类型变量 使用rowtype%定义变量 一维表类型变量 多维表类型变量 8表达
3、式 算术表达式 逻辑表达式 字符表达式 关系表达式9函数 数字函数 字符函数 转换函数 日期函数 常规函数10ODS变量命名规范create or replace procedure p_tf_acct_income_mon(/*统计分析_收入情况(月)模块名称:p_tf_acct_income_mon 生成周期:按月执行 数据来源:FAS.TF_ACCT_ITEM 数据目标:统计分析_收入情况(月)(TF_ACCT_INCOME_MON)*/avc_cycleid varchar2,-数据周期 avc_lastcycleid varchar2,-上一次成功数据周期 an_return out
4、 number,-返回值(0:表示成功-1:表示失败)an_syserr out number,-系统错误号 an_record out number,-总记录数 avc_syserrtext out varchar2 -系统错误文本 )is n_point varchar2(10);vc_sql varchar2(4000);begin .end p_tf_acct_income_mon;11流程控制 条件控制条件控制 循环控制循环控制12条件控制条件控制If 条件条件1 then 语句段语句段1;Elsif 条件条件2 then if(条件条件4)then 语句段语句段2;end if;E
5、lse 语句段语句段3;End if;13循环控制循环控制 Loop循环循环 While 循环循环 For 循环循环14Loop循环循环Loop 循环语句循环语句1 If 条件语句条件语句 then exit;else 语句语句2 end if;End loop;15Loop循环循环Loop 循环语句循环语句1 语句语句2exit when 条件语句条件语句;End loop;16For 循环循环 for 循环变量循环变量 in reverse 循环上届循环上届.下届循环下届循环 loop 循环处理语句;循环处理语句;End loop;17事务处理 Commit 命令 用 set auto o
6、noff;来打开,关闭自动提交 Rollback 命令 Savepoint命令18游标 游标的作用 隐式游标 显示游标 游标属性 引用游标/动态游标19游标的作用 从数据库中提取出数据,以临时表的形式放在内存中。初始指向首记录,利用fetch移动指针,对游标中的数据进行处理,然后写到结果表中。20显示游标select语句上 使用显式游标,明确能访问结果集 FOR循环游标(常用的一种游标)转换函数 fetch游标 参数游标21FOR循环游标定义游标定义游标变量使用for循环来使用这个游标 前向游标 只能往一个方向走 效率很高declare -类型定义 cursor cc is select em
7、pno,ename,job,sal from emp where job=MANAGER;-定义一个游标变量 ccrec cc%rowtype;begin -for循环 for ccrec in cc loop dbms_output.put_line(ccrec.empno|-|ccrec.ename|-|ccrec.job|-|ccrec.sal);end loop;end;22fetch游标使用的时候 必须要明确的打开和关闭declare -类型定义 cursor cc is select empno,ename,job,sal from emp where job=MANAGER;-定
8、义一个游标变量 ccrec cc%rowtype;begin -打开游标 open cc;-loop循环 loop -提取一行数据到ccrec中 fetch cc into ccrec;-判断是否提取到值,没取到值就退出 -取到值cc%notfound 是false -取不到值cc%notfound 是true exit when cc%notfound;dbms_output.put_line(ccrec.empno|-|ccrec.ename|-|ccrec.job|-|ccrec.sal);end loop;-关闭 close cc;end;23游标属性 游标的属性4种%notfound
9、 fetch是否提到数据 没有true 提到false%found fetch是否提到数据 有true 没提到false%rowcount 已经取出的记录的条数%isopen 布尔值 游标是否打开declare -类型定义 cursor cc is select empno,ename,job,sal from emp where job=MANAGER;-定义一个游标变量 ccrec cc%rowtype;begin -打开游标 open cc;-loop循环 loop -提取一行数据到ccrec中 fetch cc into ccrec;-判断是否提取到值,没取到值就退出 -取到值cc%n
10、otfound 是false -取不到值cc%notfound 是true exit when(cc%notfound or cc%rowcount=3);dbms_output.put_line(cc%rowcount|-|ccrec.empno|-|ccrec.ename|-|ccrec.job|-|ccrec.sal);end loop;-关闭 close cc;end;24参数游标按部门编号的顺序输出部门经理的名字 declare -部门 cursor c1 is select deptno from dept;-参数游标c2,定义参数的时候 -只能指定类型,不能指定长度 -参数只能出
11、现在select语句=号的右侧 cursor c2(no number,pjob varchar2)is select emp.*from emp where deptno=no and job=pjob;c1rec c1%rowtype;c2rec c2%rowtype;-定义变量的时候要指定长度 v_job varchar2(20);begin -部门 for c1rec in c1 loop -参数在游标中使用 for c2rec in c2(c1rec.deptno,MANAGER)loop dbms_output.put_line(c1rec.deptno|-|c2rec.ename
12、);end loop;end loop;end;25综合例子题目 求购买的商品包括了顾客“Dennis”所购买商品的顾客(姓名);create table purcase(productid number,customerid number);create table customer(customerid number,name varchar(30);思路:Dennis(A,B)别的顾客(A,B,C)(A,C)(B,C)C 26 declare -Dennis所购买的商品 cursor cur_dennis is select productid from purcase where cu
13、stomerid=(select customerid from customer where name=Dennis);-除Dennis以外的每个顾客 cursor cur_cust is select customerid from customer where name Dennis;-每个顾客购买的商品 cursor cur_prod(id varchar2)is select productid from purcase where customerid=id;j number;i number;rec_dennis cur_dennis%rowtype;rec_cust cur_c
14、ust%rowtype;rec_prod cur_prod%rowtype;avc_name varchar2(10);begin -顾客循环 for rec_cust in cur_cust loop i:=0;j:=0;for rec_dennis in cur_dennis loop i:=i+1;-每个顾客买的东西 for rec_prod in cur_prod(rec_cust.customerid)loop if(rec_prod.productid=rec_dennis.productid)then j:=j+1;end if;end loop;end loop;if(i=j)
15、then select name into avc_name from customer where customerid=rec_cust.customerid;DBMS_output.put_line(avc_name);end if;end loop;end;27隐式游标隐式游标也叫sql游标,是用来处理所有sql语句的环境区域指针;不能通过专门的语句来打开,PL/SQL隐式的打开sql游标处理完后自动关闭。单条sql语句所产生的结果集合 用关键字SQL表示隐式游标 4个属性%rowcount 影响的记录的行数 整数%found 影响到了记录 true%notfound 没有影响到记录
展开阅读全文