数据库培训PLSQL.ppt

上传人:p** 文档编号:180349 上传时间:2023-03-27 格式:PPT 页数:43 大小:362.50KB
下载 相关 举报
数据库培训PLSQL.ppt_第1页
第1页 / 共43页
数据库培训PLSQL.ppt_第2页
第2页 / 共43页
数据库培训PLSQL.ppt_第3页
第3页 / 共43页
数据库培训PLSQL.ppt_第4页
第4页 / 共43页
数据库培训PLSQL.ppt_第5页
第5页 / 共43页
数据库培训PLSQL.ppt_第6页
第6页 / 共43页
数据库培训PLSQL.ppt_第7页
第7页 / 共43页
数据库培训PLSQL.ppt_第8页
第8页 / 共43页
数据库培训PLSQL.ppt_第9页
第9页 / 共43页
数据库培训PLSQL.ppt_第10页
第10页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据库培训PLSQL.ppt》由会员分享,可在线阅读,更多相关《数据库培训PLSQL.ppt(43页珍藏版)》请在第壹文秘上搜索。

1、数据库培训PL/SQL基础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%定义变量 一维表类型变量

3、多维表类型变量 8表达式 算术表达式 逻辑表达式 字符表达式 关系表达式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 , -上一次成功数

4、据周期 an_return out 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

5、(条件条件4) then 语句段语句段2; end if;Else 语句段语句段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

6、 loop ;17事务处理 Commit 命令 用 set auto onoff; 来打开,关闭自动提交 Rollback 命令 Savepoint命令18游标 游标的作用 隐式游标 显示游标 游标属性 引用游标/动态游标19游标的作用 从数据库中提取出数据,以临时表的形式放在内存中。初始指向首记录,利用fetch移动指针,对游标中的数据进行处理,然后写到结果表中。20显示游标select语句上 使用显式游标,明确能访问结果集 FOR循环游标 (常用的一种游标)转换函数 fetch游标 参数游标21FOR循环游标定义游标定义游标变量使用for循环来使用这个游标 前向游标 只能往一个方向走 效率

7、很高declare -类型定义 cursor cc is select empno,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

8、,ename,job,sal from emp where job = MANAGER; -定义一个游标变量 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

9、); end loop; -关闭 close cc; end;23游标属性 游标的属性4种%notfound 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 -提取

10、一行数据到ccrec中 fetch cc into ccrec; -判断是否提取到值,没取到值就退出 -取到值cc%notfound 是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

11、 is select deptno from dept; -参数游标c2,定义参数的时候 -只能指定类型,不能指定长度 -参数只能出现在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

12、(c1rec.deptno,MANAGER) loop dbms_output.put_line(c1rec.deptno|-|c2rec.ename); 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) (

13、B,C) C 26 declare -Dennis所购买的商品 cursor cur_dennis is select productid from purcase where customerid=( 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 producti

14、d from purcase where customerid = id; j number ; i number; rec_dennis cur_dennis%rowtype; rec_cust cur_cust%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_pro

15、d(rec_cust.customerid) loop if (rec_prod.productid = rec_dennis.productid) then j := j + 1; end if; end loop; end loop; if (i=j) 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语句的环

16、境区域指针; 不能通过专门的语句来打开,PL/SQL隐式的打开sql游标处理完后自动关闭。 单条sql语句所产生的结果集合 用关键字SQL表示隐式游标 4个属性 %rowcount 影响的记录的行数 整数 %found 影响到了记录 true %notfound 没有影响到记录 true %isopen 是否打开 布尔值 永远是false 多条sql语句 隐式游标SQL永远指的是最后一条sql语句的结果 主要使用在update 和 delete语句上 28游标变量/动态游标select语句是动态的 declare -定义一个类型(ref cursor)弱类型 type cur is ref cursor; -定义一个ref cursor类型的变量 cura cur; c1rec emp%rowtype; c2rec dept%rowtype; begin DBMS_output.put_line(输出员工) ; open cura for select * from emp; loop fetch cura into c1rec; exit when cura%notfound; DB

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

当前位置:首页 > IT计算机 > 数据库

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!