plsql编程语音常量变量三种结构_第1页
plsql编程语音常量变量三种结构_第2页
plsql编程语音常量变量三种结构_第3页
plsql编程语音常量变量三种结构_第4页
plsql编程语音常量变量三种结构_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、plsql编程语音常量,变量,三种结构 pl/sql 编程语音 常量,变量,三种结构,游标,包,异常 处理 plsql编程语音常量,变量,三种结构 Pl/sql概述 npl/sql(procedural language/sql)pl/sql(procedural language/sql)是是 oracle oracle 在标准的在标准的 sql sql 语言上的扩展。语言上的扩展。 npl/sql pl/sql 不仅允许嵌入不仅允许嵌入 sql sql 语言,还可以定义变量和常量,允许语言,还可以定义变量和常量,允许 使用条件语句和循环语句,允许使用例外处理各种错误,这样使使用条件语句和循

2、环语句,允许使用例外处理各种错误,这样使 得它的功能变得更加强大。得它的功能变得更加强大。 n功能:功能: 1. 1.提高应用程序的运行性能提高应用程序的运行性能 2. 2.模块化的设计思想模块化的设计思想【订单的过程,转账的过程。订单的过程,转账的过程。】 3. 3.减少网络传输量减少网络传输量 4. 4.提高安全性(提高安全性(sql sql 会包括表名,有时还可能有密码,传输的会包括表名,有时还可能有密码,传输的 时候会泄露。时候会泄露。PL/SQLPL/SQL就不会)就不会) n缺点:缺点: 移植性不好(换数据库就用不了),移植性不好(换数据库就用不了), plsql编程语音常量,变量

3、,三种结构 案例欣赏 n1、编写一个存储过程,该过程可以向某表中添加记录。 n1.创建一个简单的表 nSql 代码 1. create table mytest(name varchar2(30),passwd varchar2(30); n2.创建过程 n1. create or replace procedure sp_pro1 is n2. begin-执行部分 n3. insert into mytest values(小强,m1234); n4. end; n5. / plsql编程语音常量,变量,三种结构 案例欣赏 nreplace:表示如果有 sp_pro1,就替换 如何查 看错

4、误信息:show error; 如何调用该过程: n1)exec 过程名(参数值 1,参数值 2.); 一般使用exec执行过程 n2)call 过程名(参数值 1,参数值 2.); n案例拓展:编写一个存储过程,该过程可以删 除某表记录。 plsql编程语音常量,变量,三种结构 案例拓展 n1. create or replace procedure sp_pro2 is n2. begin-执行部分 n3. delete from mytest where name=小强; n4. end; plsql编程语音常量,变量,三种结构 n1.块块 块块(block)是是 pl/sql 的基本程

5、序单元,编写的基本程序单元,编写 pl/sql 程序实际上就是编程序实际上就是编 写写 pl/sql 块,要完成相对简单的应用功能,可能只需要编写一个块,要完成相对简单的应用功能,可能只需要编写一个 pl/sql 块,但是块,但是 如果想要实现复杂的功能,可能需要在一个如果想要实现复杂的功能,可能需要在一个 pl/sql 块中嵌套其块中嵌套其 它的它的 pl/sql 块。块。 2.子程序子程序 子程序是命名的子程序是命名的PL/SQL块,分为过程和函数两类。后者调用时,由块,分为过程和函数两类。后者调用时,由 RETURN返回一个值。因此一般可使用一个过程执行一个动作,使用一返回一个值。因此一

6、般可使用一个过程执行一个动作,使用一 个函数计算一个值。个函数计算一个值。 3.过程过程 过程是执行一种特定动作的子程序,是命名的过程是执行一种特定动作的子程序,是命名的PL/SQL块。过程有两块。过程有两 部分部分:过程说明和过程体。过程说明和过程体。 plsql编程语音常量,变量,三种结构 PL/sql块结构 npl/sql pl/sql 块由三个部分构成:定义部分,执行部分,例外处理部块由三个部分构成:定义部分,执行部分,例外处理部 分。分。 n如下所示:如下所示: ndeclaredeclare n/ /* *定义部分定义部分定义常量、变量、游标、例外、复杂数据类型定义常量、变量、游标

7、、例外、复杂数据类型* */ / nbeginbegin n/ /* *执行部分执行部分要执行的要执行的 pl/sql pl/sql 语句和语句和 sql sql 语句语句* */ / nexceptionexception n/ /* *例外处理部分例外处理部分处理运行的各种错误处理运行的各种错误* */ / nend;end; n定义部分是从定义部分是从 declare declare 开始的,该部分是可选的;开始的,该部分是可选的; n执行部分是从执行部分是从 begin begin 开始的,该部分是必须的;开始的,该部分是必须的; n例外处理部分是从例外处理部分是从 exception

8、 exception 开始的,该部分是可选的。开始的,该部分是可选的。 plsql编程语音常量,变量,三种结构 变量与常量 1 1、常量:、常量: 如:数字常量如:数字常量 1010、-1-1、-1-1。020e020e;字符型常量;字符型常量 aa;字符;字符 串常量串常量 hellohello;日期常量:;日期常量:11-1111-11月月-2007-2007。 2 2、变量、变量 (1 1). .变量声明的内容变量声明的内容 赋予变量适当的名称赋予变量适当的名称 赋予变量正确的数据类型赋予变量正确的数据类型 定义变量定义变量( (标准标准, ,记录记录) ) 控制变量范围控制变量范围 (

9、2 2). .命名规则命名规则 变量由字符开头变量由字符开头 可以包含可以包含: :数字,下划线数字,下划线,$,#,$,#等等 变量长度范围变量长度范围:1-30:1-30 大小写不区分大小写不区分 变量名不能是系统关键字变量名不能是系统关键字. . plsql编程语音常量,变量,三种结构 常量应用案例 n实例 1-只包括执行部分的 pl/sql 块 nSql 代码 1. set serveroutput on -打开输出选项 2. begin 3. dbms_output.put_line(hello); 4. end; n相关说明: dbms_output 是 oracle 所提供的包(

10、类似 java 的开发包),该包包 含一些过程,put_line 就是 dbms_output 包的一个过程。 plsql编程语音常量,变量,三种结构 变量应用案例1 n实例1包含定义部分和执行部分的块 ndeclare x varchar2(20); begin x:=this is.; dbms_output.put_line(x的值为:|x); end; / n说明要想在屏幕上显示结果,必须 nset serveroutput on size 10000 L -调出来内存中的命令,即前面的块 plsql编程语音常量,变量,三种结构 变量应用案例2 n实例2,包含定义部分和执行部分 nde

11、clare v_ename varchar2(5); -定义字符串变量 begin select ename into v_ename from emp where empno= dbms_output.put_line(雇员名:|v_ename); end; / n如果要把薪水也显示出来,那么执行部分就应该这么写: Sql 代 码 1. select ename,sal into v_ename,v_sal from emp where empno= n说明:说明: 2. v_ename varchar2(5); n3. v_sal number(7,2);3. v_sal number(7

12、,2); n4. begin -4. begin -执行部分执行部分 n5. select ename,sal into v_ename,v_sal from emp where empno=5. select ename,sal into v_ename,v_sal from emp where empno= 6. dbms_output.put_line( 6. dbms_output.put_line(用户名是:用户名是:|v_ename| |v_ename| 工资:工资:|v_sal); |v_sal); - -在控制台显示用户名在控制台显示用户名 7.exception - 7.ex

13、ception -异常处理异常处理 n8.when no_data_found then8.when no_data_found then n朋友,你的编号输入有误!朋友,你的编号输入有误!); n10.end;10.end; n11./11./ plsql编程语音常量,变量,三种结构 变量说明 n1).1).当定义变量时,建议用当定义变量时,建议用 v_v_作为前缀作为前缀 v_salv_sal n2).2).当定义常量时,建议用当定义常量时,建议用 c_c_作为前缀作为前缀 c_ratec_rate n3).3).当定义游标时,建议用当定义游标时,建议用_cursor _cursor 作为

14、后缀作为后缀 emp_cursor 4).emp_cursor 4).当当 定义例外时,建议用定义例外时,建议用 e_e_作为前缀作为前缀 e_errore_error n/* 内容内容 */块注释块注释 - 行注释行注释 plsql编程语音常量,变量,三种结构 分支语句 n1.IF分支 if .then . elsif.then . else . end if n2.CASE分支 case when.then. else end case plsql编程语音常量,变量,三种结构 If语句案例 ndeclare a number; b varchar2(10); begin a:=2; if

15、a=1 then b:=a; elsif a=2 then b:=b; elsif a=3 then b=c; nelse b:=c; end if; dbms_output.put_line(B值是:值是:|b); end; / plsql编程语音常量,变量,三种结构 Case语句案例 ndeclare a number; b varchar2(10); begin a:=10; case when a=1 then b:=a; when a=2 then b:=b; when a=3 then b:=c; when a=4 then b:=d; else b:=others; end ca

16、se; dbms_output.put_line(B值是:值是:|b); end; / plsql编程语音常量,变量,三种结构 循环语句 n循环语句 1. 基本循环(至少执行一次) loop . end loop n2. while循环 (可能一次都不执行) while expression loop . end loop n3. for循环 (知道循环次数) for counter in reverse start_value.end_value loop . end loop plsql编程语音常量,变量,三种结构 基本循环案例 ndeclare x number; begin x:=0;

17、 Loop x:=x+1; if x=3 then exit; end if; dbms_output.put_line(内内x值是:值是:|x); end loop; dbms_output.put_line(外外x值是:值是:|x); end; / 结果是结果是 内内x值是:值是:1 内内x值是:值是:2 外外x值是:值是:3 plsql编程语音常量,变量,三种结构 While循环 ndeclare x number; begin x:=0; while x=3 Loop x:=x+1; dbms_output.put_line(内内x值是:值是:|x); end loop; dbms_o

18、utput.put_line(外外x值是:值是:|x); end; / n结果是结果是 内内x值是:值是:1 内内x值是:值是:2 内内x值是:值是:3 内内x值是:值是:4 外外x值是:值是:4 plsql编程语音常量,变量,三种结构 For循环 nbegin for i in 1.5 loop dbms_output.put_line(i值是:|i); end loop; dbms_output.put_line(END OF FOR LOOP); end; / 结果是 i值是:1 i值是:2 i值是:3 i值是:4 i值是:5 END OF FOR LOOP plsql编程语音常量,变量

19、,三种结构 For循环 nbegin for i in reverse 1.5 loop dbms_output.put_line(i值是:|i); end loop; dbms_output.put_line(END OF FOR LOOP); end; / 结果是 i值是:5 i值是:4 i值是:3 i值是:2 i值是:1 END OF FOR LOOP plsql编程语音常量,变量,三种结构 Goto循环 ndeclare x number; begin x:=0; x:=x+1; dbms_output.put_line(内x值是:|x); if x3 then goto repeat

20、_loop; end if; end; / 结果是 内x值是:1 内x值是:2 内x值是:3 plsql编程语音常量,变量,三种结构 异常处理 n1.什么是异常 在PL/SQL中一个警告或错误的情形都被称为 异常.包括:编译时和运行时. 2.异常分类 系统异常 自定义异常 3.异常结构 exception when . then . plsql编程语音常量,变量,三种结构 异常案例 ndeclare test varchar2(10); begin select name into test from d where id=tt; dbms_output.put_line(test); end

21、; / plsql编程语音常量,变量,三种结构 案例分析 n系统异常处理. declare test varchar2(10); begin select name into test from d where id=tt; dbms_output.put_line(test); exception when no_data_found then dbms_output.put_line(没有找到数据!); end; / plsql编程语音常量,变量,三种结构 常见系统异常 预定义异常描述 DUP_VAL_ON_INDEX向有唯一约束的表中插入重 复行 NO_DATA_FOUND在一个sele

22、ct into 语句中无 返回值 TOO_MANY_ROWSSelect into语句返回了多行 VALUE_ERROR一个算法、转换、截断或大 小约束发生错误 ZERO_DIVIDE发生被零除 plsql编程语音常量,变量,三种结构 自己定义一个异常处理 ndeclare tname varchar2(10); e exception; begin select name into tname from d where id=01; if tnameB部门 then raise e; end if; dbms_output.put_line(tname); exception when e

23、then dbms_output.put_line(错误,不是需要的B部门!); end; / plsql编程语音常量,变量,三种结构 记录 n什么是记录 记录是由几个相关值构成的复合变量.常用于支持 SELECT语句的返回值. 使用记录可以将一行数据看成一个单元进行处理.还不 必将每一列单独处理. 记录的声明 type type_name is record( Variable_name datatype;, Variable_name datatype;, . ); real_name type_name; plsql编程语音常量,变量,三种结构 记录案例1 ndeclare type m

24、yrecord IS record( id varchar2(10), name varchar2(10); real_record myrecord; begin select eid,ename into real_record from emp where eid=001; dbms_output.put_line(real_record.id|,|real_record.n ame); end; / 结果为: 001,赵1 plsql编程语音常量,变量,三种结构 记录案例2 ndeclare type myrecord IS record( id emp.eid%type, 直接定义为

25、数据库匹配的类型 name varchar2(10); real_record myrecord; begin select eid,ename into real_record from emp where eid=001; dbms_output.put_line(real_record.id|,|real_record.n ame); end; / 结果为: 001,赵1 plsql编程语音常量,变量,三种结构 记录案例3 ndeclare myrec emp%rowtype; 直接用表的资料来定义 记录类型 begin select * into myrec from emp wher

26、e eid=001; dbms_output.put_line(myrec.eid|,|myrec.en ame|,|myrec.sex); end; / 结果为 001,赵1,男 plsql编程语音常量,变量,三种结构 游标 n1什么是游标什么是游标 游标是一种游标是一种PL/SQL控制结构控制结构,可以对可以对SQL语句的处理进行显式控语句的处理进行显式控 制制. 便于对表的行数据逐条进行处理便于对表的行数据逐条进行处理. n2.游标的分类游标的分类 显式显式 以声明的方式去利用游标以声明的方式去利用游标 n隐式隐式 sl/sql 会为所有的会为所有的Select语句创建隐式游标语句创建隐式游标 n3.游标的属性游标的属性 %FOUND 数据可取即为数据可取即为true 没有数据时没有数据时false n%ISOPEN 当游标打开时是当游标打开时是true n%NOTFOUND %ROWCOUNT 没取数据时为没取数据时为false,取一条记录后变成,取一条记录后变成1。返。返 回从游标中取出记录的数目,相当于计数器回从游标中取出记录的数目,相当于计数器 n注意:游标不是数据库对象,他是在内存开辟的一个区域,总体注意:游标不是数据库对象,他是在内存开辟的一个区域,总体 上,有两个方面组成,一个是结果集,结果集中对应的数据的位上,有两个方面组成,一个是结果集,结果

温馨提示

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

最新文档

评论

0/150

提交评论