《PLSQL经典教程》PPT课件

上传人:xt****7 文档编号:187156129 上传时间:2023-02-11 格式:PPT 页数:36 大小:115KB
收藏 版权申诉 举报 下载
《PLSQL经典教程》PPT课件_第1页
第1页 / 共36页
《PLSQL经典教程》PPT课件_第2页
第2页 / 共36页
《PLSQL经典教程》PPT课件_第3页
第3页 / 共36页
资源描述:

《《PLSQL经典教程》PPT课件》由会员分享,可在线阅读,更多相关《《PLSQL经典教程》PPT课件(36页珍藏版)》请在装配图网上搜索。

1、1-1PL/SQL PL/SQL 程序设计简介程序设计简介 1-2什么是什么是PL/SQL PL/SQL PL/SQL是 Procedure Language&Structured Query Language(过程化SQL语言)的缩写PL/SQL是对SQL语言存储过程语言的扩展1-3PL/SQLPL/SQL的优点的优点它最大的优点是提供了一种服务器端存储过程语言,可以对数据进行快速高效的处理。任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。可以使用ORACLE数据工具管理存储在服务器中的PL/SQL程序的安全性。可以授权或撤销数据库其他用户访问PL/SQL程序的能力。对于S

2、QL,ORACLE必须在同一时间处理每一条SQL语句,在网络环境下这就意味着每一个独立的调用都必须被oracle服务器处理,这就占用大量的服务器时间,同时导致网络拥挤。而PL/SQL是以整个语句块发给服务器,这就降低了网络拥挤。1-4 PL/SQL PL/SQL块结构和组成元素块结构和组成元素 PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分。1-5 PL/SQL PL/SQL块结构和组成元素块结构和组成元素 PL/SQLPL/SQL块的结构如下:块的结构如下:DECLARE /*声明部分声明部分:在此声明在此声明PL/SQLPL/SQL用到的变量用到的变量,类型及游标,以及类

3、型及游标,以及局部的存储过程和函数局部的存储过程和函数 */BEGIN /*执行部分执行部分:过程及过程及SQL SQL 语句语句 ,即程序的主要部分即程序的主要部分 */EXCEPTION /*执行异常部分执行异常部分:错误处理错误处理 */END;其中其中 执行部分是必须的。执行部分是必须的。1-6 PL/SQL PL/SQL块结构和组成元素块结构和组成元素 PL/SQL块可以分成三类:匿名块:动态构造,只能执行一次 子程序:存储在数据库中的存储过程、函数及包等。当在数据库上建立好后可以在其它程序中调用它们 触发器:当数据库发生操作时,会触发一些事件,从而自动执行相应的程序 1-7 PL/

4、SQL PL/SQL中的标识符中的标识符PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同标识符名不能超过30字符 第一个字符必须为字母 不能用-(减号)不分大小写 不能是SQL保留字 1-8 PL/SQL PL/SQL中的标识符中的标识符 一般不要把变量名声明与表中字段名完全一样,如果这样可能得到不正确的结果 例:DECLARE Ename varchar2(20):=KING;BEGINDELETE FROM emp WHERE ename=ename;END;1-9 PL/SQL PL/SQL中的标识符中的标识符下面是建议使用的变量命名方法 标识符命名原则例程序变量 V_n

5、ameV_id程序常量 C_constantC_student_name游标变量 Name_cursorEmp_cursor异常标识 E_nameE_too_many_rows表类型 Name_table_typeEmp_record_type表 Name_tableEmp记录类型 Name_typeEmp_record参数P_nameP_id练习:给KING的工资涨10%1-10 PL/SQL PL/SQL中的变量类型中的变量类型类型 说明CHAR(n)定长字符串,长度可选,缺省1。最大可达2000字节VARCHAR2(n)可变字符串,长度不能缺省,最大可达4000字节BINARY_INTE

6、GER 带符号整数,为整数计算优化性能 NUMBER(p,s)数值,p代表刻度,s代表精度LONG 变长字符串 DATE 日期BOOLEAN 布尔ROWID 存放数据库行号 1-11 PL/SQL PL/SQL中声明变量中声明变量在语句块的声明部分对变量声明,声明一个变量的语法是:variable_name constant type not null :=value其中:variable_name 为变量名 type 为类型 value 为变量的初值1-12 PL/SQL PL/SQL中声明变量中声明变量例:DECLAREV_Description VARCHAR2(50);V_Number

7、 NUMBER:=45;V_Counter BINARY_INTEGER:=0;注意:如果变量在声明时使用了NOT NULL选项则必须为变量指定初值。如果变量在声明时使用了CONSTANT选项则必须为变量指定初值,并且该初值不能被改变。练习:查询员工号为7788的员工姓名,并显示在控制台。1-13 PL/SQLPL/SQL中的复合类型中的复合类型 记录类型:记录类型是把逻辑相关的数据作为一个单元存储起来 定义记录类型语法如下:TYPE record_type IS RECORD(Field1 type1 NOT NULL :=exp1,Field2 type2 NOT NULL :=exp2,

8、.Fieldn typen NOT NULL :=expn );练习1:创建一个图书记录类型(书号,书名),显示结果为:书号:1100 书名:练习2:显示7788号员工的员工号,姓名,工资1-14 PL/SQLPL/SQL中的复合类型中的复合类型%TYPE:定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE 例:DECLARE -用%TYPE 类型定义与表相配的字段 TYPE t_Record IS RECORD(T_no emp.empno%TYPE,T_name emp.ename%TYPE,T_sal emp.sal%

9、TYPE);-声明接收数据的变量 v_emp t_Record;1-15 PL/SQLPL/SQL中的复合类型中的复合类型%ROWTYPE:返回一个记录类型,其数据类型和数据库表的数据结构相 一致。例:DECLARE v_empno emp.empno%TYPE:=&no;rec emp%ROWTYPE;BEGIN SELECT*INTO rec FROM emp WHERE empno=v_empno;DBMS_OUTPUT.PUT_LINE(姓名:|工资:|工作时间:|);END;1-16 PL/SQL PL/SQL表表 PL/SQL表或者称为索引表(index-table),是可以在PL

10、/SQL 程序中引用、能够模仿数组的非永久表。用户可以定义一个表类型,然后声明这种类型的变量。接下来,用户就可以将记录添加到用户的PL/SQL 表中,并且采用与引用数组元素大体相同的方法引用他们 表包括两个基本成分:数据处理类型为BINARY_INTEGER主键 标量或记录数据类型的列 1-17 PL/SQL PL/SQL表表 定义一个表:TYPE type_name IS TABLE OFcolumn_type|variable%TYPE|table.column%TYPE NOT NULL|table%ROWTYPEINDEX BY BINARY_INTEGER;例:DECLARETYPE

11、 dept_table_type IS TABLE OF dept%ROWTYPE INDEX BY BINARY_INTEGER;my_dname_table dept_table_type;1-18 引用表元素引用表元素 例:DECLAREtype dept_table_type is table of dept%ROWTYPE index by binary_integer;my_dname_table dept_table_type;int number(3);BEGIN int:=-10;my_dname_table(int).dname:=searching;dbms_output

12、.put_line(my_dname_table(int).dname);int:=0;my_dname_table(int).dname:=market;dbms_output.put_line(my_dname_table(int).dname);int:=10;my_dname_table(int).dname:=finance;dbms_output.put_line(my_dname_table(int).dname);END;1-19 PL/SQL PL/SQL表表 注意:Index-by表中的元素不一定要按任何特定的顺序排序 用于Index-by表的关键字没有必要是顺序的 关键字

13、唯一允许的类型是BINARY_INTERGER练习:定义数组元素为部门表的记录的数组,保存10号,20号部门的信息并显示。1-20PL/SQLPL/SQL中的可变数组中的可变数组 一般格式为:TYPE type_name IS VARRAY(maximum_size)OF element_type NOT NULL 其中:type_name是新可变长数组类型的类型名。maximum_size是一个指定可变数组中元素最大数目的整数。element_type是一个PL/SQL标量、记录或对象类型。NOT NULL子串表示集合中的每一个元素都必须有值。一般格式为:DECLAREtype number

14、list is varray(10)of number(5);type recordlist is varray(5)of dept%rowtype;1-21 引用数组元素引用数组元素 例:DECLAREtype strings is varray(5)of varchar2(10);-Declare a varray with four element v_list strings:=strings(scott,peter,smith,tom);int number;BEGIN int:=1;dbms_output.put_line(v_list(int);v_list(int):=urma

15、n;dbms_output.put_line(v_list(int);int:=3;dbms_output.put_line(v_list(int);v_list(int):=jackson;dbms_output.put_line(v_list(int);v_list(5):=oracle;dbms_output.put_line(v_list(5);END;1-22PL/SQL表和可变数组的区别表和可变数组的区别VARRAY集合中的元素的数量是有限的,集合中的元素的数量是有限的,Index_by则则是没有限制的。是没有限制的。Index_by表的下标可以有间隔,表的下标可以有间隔,VARR

16、AY集合的下标集合的下标之间没有间隔。之间没有间隔。Index_by表不能存储在数据库中,但嵌套表和表不能存储在数据库中,但嵌套表和VARRAY可以被存储在数据库中。可以被存储在数据库中。Index_by表初始化是自动进行的,表初始化是自动进行的,VARRAY就必须使就必须使用内建的构造函数,构造函数和集合的名字相同用内建的构造函数,构造函数和集合的名字相同。1-23 表和数组属性表和数组属性 属性返回类型描述有效范围Exists(n)boolean指定索引为n的元素在集合中是否存在表、可变数组countnumber返回集合中元素的数目表、可变数组limitnumber返回集合中最大元素数可变

17、数组First&lastBinary_integer返回第一个(最后一个)元素的索引表、可变数组Next&priorBinary_integer返回当前元素的下一个(前一个)元素的索引表、可变数组extendN/A向集合末尾添加一个元素可变数组trimN/A从集合的最后删除一个元素可变数组Delete(n)N/A删除元素下标为n的元素 表1-24 表和数组属性表和数组属性 例:DECLAREtype strings_table is table of varchar2(10)index by binary_integer;strings strings_table;int number;BEG

18、IN int:=1;strings(int):=element1;if strings.exists(int)then dbms_output.put_line(strings(int);else dbms_output.put_line(no data!);return;end if;1-25 表和数组属性表和数组属性 例:strings(2):=element2;strings(3):=element3;strings(4):=element4;strings(5):=element5;strings(6):=element6;);););dbms_output.put_line(stri

19、ngs.next(2);dbms_output.put_line(strings.prior(4);strings.delete(1,3);-dbms_output.put_line(strings(2);END;1-26 PL/SQL PL/SQL运算符和表达式运算符和表达式 关系运算符 运算符 意义=等于 ,!=,=,=不等于 大于=大于等于1-27 PL/SQL PL/SQL运算符和表达式运算符和表达式 一般运算符一般运算符 运算符 意义+加号-减号*乘号/除号:=赋值号|连接符.范围运算符1-28 PL/SQL PL/SQL运算符和表达式运算符和表达式 逻辑运算符逻辑运算符 运算符 意

20、义 IS NULL 空值BETWEEN AND介于两者之间IN 在一个值列表之中AND逻辑与 OR逻辑或 NOT取返,如 IS NOT NULL,NOT IN 1-29 PL/SQL PL/SQL中的变量赋值中的变量赋值在PL/SQL编程中,变量赋值是一个值得注意的地方,它的语法如下:variable :=expression;variable 是一个PL/SQL变量,expression 是一个PL/SQL 表达式.BOOLEAN 型变量赋值:布尔值只有TRUE,FALSE及 NULL 三个值。空值加数字仍是空值:NULL+=NULL。空值加(连接)字符,结果为字符:NULL|=1-30 P

21、L/SQL PL/SQL中的变量赋值中的变量赋值例:DECLAREdone BOOLEAN;/*the following statements are legal:*/BEGINdone:=FALSE;WHILE NOT done LOOPNull;END LOOP;END;1-31 PL/SQL PL/SQL中的中的变量作用范围及可见性变量作用范围及可见性 PL/SQL的变量作用范围特点是:变量的作用范围是在所引用的程序单元(块、子程序、包)内。即从声明变量开始到该块的结束 一个变量(标识)只能在所引用的块内是可见的 当一个变量超出了作用范围,PL/SQL引擎就释放用来存放该变量的空间(因

22、为它可能不用了)在子块中重新定义该变量后,它的作用仅在该块内 1-32 PL/SQL PL/SQL中的中的变量作用范围及可见性变量作用范围及可见性 例:DECLAREv_Number NUMBER(3,2);BEGINDECLAREv_Character VARCHAR2(10);BEGIN END;END;v_Number的作用域v_Character的作用域1-33 PL/SQL PL/SQL中的注释中的注释 在PL/SQL里,可以使用两种符号来写注释:PL/SQL允许用双来写注释,它的作用范围是只能在一行有效。例:V_Sal NUMBER(12,2);-工资变量 使用/*/来加一行或多行

23、注释。例:/*/*文件名:*/*/1-34 PL/SQL PL/SQL简介简介 例:简单数据查询例子 DECLARE emp_id emp.empno%TYPE:=7788;emp_name emp.ename%TYPE;wages emp.sal%TYPE;BEGINSELECT ename,NVL(sal,0)+NVL(comm,0)INTO emp_name,wages FROM emp WHERE empno=emp_id;DBMS_OUTPUT.PUT_LINE(emp_name|-|to_char(wages);END;1-35 PL/SQL PL/SQL简介简介 例:简单数据插入

24、例子/*本例子仅是一个简单的插入,不是实际应用。*/DECLAREv_ename VARCHAR2(20):=Bill;v_sal NUMBER(7,2):=1234.56;v_deptno NUMBER(2):=10;v_empno NUMBER(4):=8888;BEGININSERT INTO emp(empno,ename,JOB,sal,deptno,hiredate)VALUES(v_empno,v_ename,Manager,v_sal,v_deptno,TO_DATE(1954.06.09,yyyy.mm.dd);COMMIT;END;1-36 PL/SQL PL/SQL简介简介 例:简单数据删除例子/*本例子仅是一个简单的删除例子,不是实际应用。*/DECLAREv_empno number(4):=8888;BEGINDELETE FROM emp WHERE empno=v_empno;COMMIT;END;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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