调用存储过程详解精选文档.ppt

上传人:石*** 文档编号:45229897 上传时间:2022-09-23 格式:PPT 页数:34 大小:1.73MB
返回 下载 相关 举报
调用存储过程详解精选文档.ppt_第1页
第1页 / 共34页
调用存储过程详解精选文档.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《调用存储过程详解精选文档.ppt》由会员分享,可在线阅读,更多相关《调用存储过程详解精选文档.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、调用存储过程详解本讲稿第一页,共三十四页PL/SQL PL/SQL 块的结构和实例介绍块的结构和实例介绍 学习目标学习目标 理解理解oracle oracle 的的pl/sql pl/sql 概念概念 掌握掌握pl/sql pl/sql 编程技术(包括编写过程、函数、触发器编程技术(包括编写过程、函数、触发器.)pl/sql pl/sql 的介绍的介绍 pl/sql pl/sql 是什么是什么 pl/sql(procedural language/sql)pl/sql(procedural language/sql)是是oracle oracle 在标准的在标准的sql sql 语言上的扩展。

2、语言上的扩展。pl/sql pl/sql 不仅允许嵌入不仅允许嵌入sql sql 语言,还可以定义变量和常量,允许使用条件语句和语言,还可以定义变量和常量,允许使用条件语句和 循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。本讲稿第二页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 学习必要性学习必要性 1.1.提高应用程序的运行性能提高应用程序的运行性能 2.2.模块化的设计思想模块化的设计思想【分页的过程,订单的过程,转账的过程。分页的过程,订单的过程,转账的过程。】3.3.减少网络传

3、输量减少网络传输量 4.4.提高安全性(提高安全性(sql sql 会包括表名,有时还可能有密码,传输的时候会泄露。会包括表名,有时还可能有密码,传输的时候会泄露。PL/SQLPL/SQL 就不会)就不会)为什么为什么PL/SQL PL/SQL 会快呢?会快呢?不好的地方:不好的地方:移植性不好(换数据库就用不了)移植性不好(换数据库就用不了)本讲稿第三页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 sqlplus sqlplus 开发工具开发工具 sqlplus sqlplus 是是oracle oracle 公司提供的一个工具,这个因为我们在以前介绍过的:公司提供的

4、一个工具,这个因为我们在以前介绍过的:举一个简单的案例:举一个简单的案例:编写一个存储过程,该过程可以向某表中添加记录。编写一个存储过程,该过程可以向某表中添加记录。一个简单的存储过程一个简单的存储过程 CREATE OR REPLACE CREATE OR REPLACE PROCEDUREPROCEDURE proc_helloworld proc_helloworldISISBEGINBEGIN DBMS_OUTPUT.put_line(Hello World!);DBMS_OUTPUT.put_line(Hello World!);END;END;/本讲稿第四页,共三十四页PL/SQL

5、 PL/SQL 块的结构和实例块的结构和实例 需要在屏幕上显示出需要在屏幕上显示出DBMS_OUTPUT.put_lineDBMS_OUTPUT.put_line的输出字符串,需要做一个小小的设置的输出字符串,需要做一个小小的设置SQL show serveroutputSQL show serveroutputserveroutput OFFserveroutput OFF SQL set serveroutput on SQL set serveroutput on SQL show serveroutput ON SIZE 10000 FORMAT WORD_WRAPPED SQL sh

6、ow serveroutput ON SIZE 10000 FORMAT WORD_WRAPPED 1.1.创建一个简单的表创建一个简单的表 Sql Sql 代码代码 1.create table mytest(name varchar2(30),passwd varchar2(30);1.create table mytest(name varchar2(30),passwd varchar2(30);本讲稿第五页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 2.2.创建过程创建过程 Sql Sql 代码代码 1.1.createcreate oror replace

7、replace procedureprocedure sp_pro1 sp_pro1 is is 2.2.begin-begin-执行部分执行部分 3.insert into mytest values(3.insert into mytest values(杨世顺杨世顺,m1234),m1234);4.4.endend;5.5./replace:replace:表示如果有表示如果有sp_pro1sp_pro1,就替换,就替换 如何查看错误信息:如何查看错误信息:show error;show error;如何调用该过程:如何调用该过程:1 1)exec exec 过程名(参数值过程名(参数值

8、1 1,参数值,参数值2.2.););SQLSQL执行执行 2 2)call call 过程名(参数值过程名(参数值1 1,参数值,参数值2.2.);程序调用);程序调用 本讲稿第六页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 pl/sqln developerpl/sqln developer开发工具开发工具 pl/sql developer pl/sql developer 是用于开发是用于开发pl/sql pl/sql 块的集成开发环境块的集成开发环境(ide)(ide),它是一个独立,它是一个独立 的产品,而不是的产品,而不是oracle oracle 的一个

9、附带品。的一个附带品。举一个简单案例:举一个简单案例:编写一个存储过程,该过程可以删除某表记录。编写一个存储过程,该过程可以删除某表记录。Sql Sql 代码代码 1.create or replace procedure sp_pro2 is1.create or replace procedure sp_pro2 is 2.begin-2.begin-执行部分执行部分 3.delete from mytest where name=3.delete from mytest where name=杨世顺杨世顺;4.end;4.end;本讲稿第七页,共三十四页PL/SQL PL/SQL 块的结

10、构和实例块的结构和实例 pl/sql pl/sql 基础基础 pl/sql pl/sql 介绍介绍 开发人员使用开发人员使用pl/sql pl/sql 编写应用模块时,不仅需要掌握编写应用模块时,不仅需要掌握sql sql 语句的编写方法,语句的编写方法,还要掌握还要掌握pl/sql pl/sql 语句及语法规则。语句及语法规则。pl/sql pl/sql 编程可以使用变量和逻辑控制语句,编程可以使用变量和逻辑控制语句,从而可以编写非常有用的功能模块。比如:分页存储过程模块、订单处理存储过从而可以编写非常有用的功能模块。比如:分页存储过程模块、订单处理存储过 程模块、转账存储过程模块。而且如果

11、使用程模块、转账存储过程模块。而且如果使用pl/sql pl/sql 编程,我们可以轻松地完成编程,我们可以轻松地完成 非常复杂的查询要求。非常复杂的查询要求。pl/sql pl/sql 可以做什么可以做什么 简单分类简单分类 过程过程(存储过程存储过程)函数函数 块块(编程编程)触发器触发器 包包本讲稿第八页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 编写规范编写规范 编写规范编写规范n n 1.1.注释注释 单行注释单行注释 -Sql Sql 代码代码 1.select*from emp where empno=7788;-1.select*from emp wh

12、ere empno=7788;-取得员工信息取得员工信息 多行注释多行注释 /*.*/*.*/来划分来划分 2.2.标志符号的命名规范标志符号的命名规范 1).1).当定义变量时,建议用当定义变量时,建议用v_v_作为前缀作为前缀v_salv_sal 2).2).当定义常量时,建议用当定义常量时,建议用c_c_作为前缀作为前缀c_ratec_rate 3).3).当定义游标时,建议用当定义游标时,建议用_cursor _cursor 作为后缀作为后缀emp_cursoremp_cursor 4).4).当定义例外时,建议用当定义例外时,建议用e_e_作为前缀作为前缀e_errore_error

13、 本讲稿第九页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 pl/sql pl/sql 块介绍块介绍 介绍介绍n n 块块(block)(block)是是pl/sql pl/sql 的基本程序单元,编写的基本程序单元,编写pl/sql pl/sql 程序实际上就是编写程序实际上就是编写 pl/sql pl/sql 块,要完成相对简单的应用功能,可能只需要编写一个块,要完成相对简单的应用功能,可能只需要编写一个pl/sql pl/sql 块,但是块,但是 如果想要实现复杂的功能,可能需要在一个如果想要实现复杂的功能,可能需要在一个pl/sql pl/sql 块中嵌套其它的

14、块中嵌套其它的pl/sql pl/sql 块。块。块块n n结构示意图结构示意图 pl/sql pl/sql 块由三个部分构成:定义部分,执行部分,例外处理部分。块由三个部分构成:定义部分,执行部分,例外处理部分。如下所示:如下所示:declaredeclare/*/*定义部分定义部分定义常量、变量、游标、例外、复杂数据类型定义常量、变量、游标、例外、复杂数据类型*/beginbegin/*/*执行部分执行部分要执行的要执行的pl/sql pl/sql 语句和语句和sql sql 语句语句*/exceptionexception/*/*例外处理部分例外处理部分处理运行的各种错误处理运行的各种错

15、误*/end;end;定义部分是从定义部分是从declare declare 开始的,该部分是可选的;开始的,该部分是可选的;执行部分是从执行部分是从begin begin 开始的,该部分是必须的;开始的,该部分是必须的;例外处理部分是从例外处理部分是从exception exception 开始的,该部分是可选的。开始的,该部分是可选的。可以和可以和java java 编程结构做一个简单的比较。编程结构做一个简单的比较。本讲稿第十页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 pl/sql pl/sql 块的实例块的实例(1)(1)实例实例1-1-只包括执行部分的只包

16、括执行部分的pl/sql pl/sql 块块n n Sql Sql 代码代码 1.set serveroutput on-1.set serveroutput on-打开输出选项打开输出选项 2.begin2.begin 3.dbms_output.put_line(hello);3.dbms_output.put_line(hello);4.end;4.end;相关说明:相关说明:dbms_output dbms_output 是是oracle oracle 所提供的包所提供的包(类似类似java java 的开发包的开发包),该包包含一些过程,该包包含一些过程,put_line put_l

17、ine 就是就是dbms_output dbms_output 包的一个过程。包的一个过程。本讲稿第十一页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 pl/sql pl/sql 块的实例块的实例(2)(2)实例实例2-2-包含定义部分和执行部分的包含定义部分和执行部分的pl/sql pl/sql 块块n n Sql Sql 代码代码 1.declare1.declare 2.v_ename varchar2(5);-2.v_ename varchar2(5);-定义字符串变量定义字符串变量 3.begin3.begin 4.select ename into v_en

18、ame from emp where empno=&aa;4.select ename into v_ename from emp where empno=&aa;5.dbms_output.put_line(5.dbms_output.put_line(雇员名:雇员名:|v_ename);|v_ename);6.end;6.end;7./7./如果要把薪水也显示出来,那么执行部分就应该这么写:如果要把薪水也显示出来,那么执行部分就应该这么写:Sql Sql 代码代码 1.select ename,sal into v_ename,v_sal from emp where empno=&aa;

19、1.select ename,sal into v_ename,v_sal from emp where empno=&aa;相关说明:相关说明:&表示要接收从控制台输入的变量表示要接收从控制台输入的变量 本讲稿第十二页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 pl/sql pl/sql 块的实例块的实例(3)(3)实例实例3-3-包含定义部分,执行部分和例外处理部分包含定义部分,执行部分和例外处理部分 为了避免为了避免pl/sql pl/sql 程序的运行错误,提高程序的运行错误,提高pl/sql pl/sql 的健壮性,应该对可能的错误的健壮性,应该对可能的错误

20、 进行处理,这个很有必要。进行处理,这个很有必要。1.1.比如在实例比如在实例2 2 中,如果输入了不存在的雇员号,应当做例外处理。中,如果输入了不存在的雇员号,应当做例外处理。2.2.有时出现异常,希望用另外的逻辑处理有时出现异常,希望用另外的逻辑处理 我们看看如何完成我们看看如何完成1 1 的要求。的要求。相关说明:相关说明:oracle oracle 事先预定义了一些例外,事先预定义了一些例外,no_data_found no_data_found 就是找不到数据的例外。就是找不到数据的例外。Sql Sql 代码代码 1.declare1.declare 2.-2.-定义变量定义变量 3

21、.v_ename varchar2(5);3.v_ename varchar2(5);4.v_sal number(7,2);4.v_sal number(7,2);5.begin5.begin 6.-6.-执行部分执行部分 7.select ename,sal into v_ename,v_sal from emp where empno=&aa;7.select ename,sal into v_ename,v_sal from emp where empno=&aa;8.-8.-在控制台显示用户名在控制台显示用户名 9.dbms_output.put_line(9.dbms_output

22、.put_line(用户名是:用户名是:|v_ename|v_ename|工资:工资:|v_sal);|v_sal);10.-10.-异常处理异常处理 11.exception11.exception 12.when no_data_found then12.when no_data_found then 13.dbms_output.put_line(13.dbms_output.put_line(朋友,你的编号输入有误!朋友,你的编号输入有误!);14.end;14.end;15./15./本讲稿第十三页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 pl/sqlpl

23、/sql分类分类 -过程,函数,包,触发器过程,函数,包,触发器 过程过程 过程用于执行特定的操作,当建立过程时,既可以指定输入参数过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in)(in),也可以指,也可以指 定输出参数定输出参数(out)(out),通过在过程中使用输入参数,可以将数据传递到执行部分;通过在过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行部分的数据传递到应用环境。在通过使用输出参数,可以将执行部分的数据传递到应用环境。在sqlplus sqlplus 中可以中可以 使用使用create procedure create procedu

24、re 命令来建立过程。命令来建立过程。本讲稿第十四页,共三十四页PL/SQLPL/SQL 块的结构和实例 实例如下:实例如下:1.1.请考虑编写一个过程,可以输入雇员名,新工资,可修改雇员的工资请考虑编写一个过程,可以输入雇员名,新工资,可修改雇员的工资 2.2.如何调用过程有两种方法;如何调用过程有两种方法;exec callexec call 3.3.如何在如何在java java 程序中调用一个存储过程程序中调用一个存储过程 问题:如何使用过程返回值?问题:如何使用过程返回值?特别说明:特别说明:对于过程我们会在以后给大家详细具体的介绍,现在请大家先有一个概念。对于过程我们会在以后给大家

25、详细具体的介绍,现在请大家先有一个概念。create procedure sp_pro3(spName varchar2,newSal number)iscreate procedure sp_pro3(spName varchar2,newSal number)is-不要写成不要写成number(3,2),number(3,2),表明类型就可以了,不需要大小。就好像表明类型就可以了,不需要大小。就好像Java Java 写方法写方法 时的参数一样时的参数一样 Sql Sql 代码代码 1.begin1.begin 2.-2.-执行部分,根据用户名去修改工资执行部分,根据用户名去修改工资 3.

26、update emp set sal=newSal where ename=spName;3.update emp set sal=newSal where ename=spName;4.end;4.end;5./5./本讲稿第十五页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 java java 程序中调用一个存储过程程序中调用一个存储过程/演示演示java java 程序去调用程序去调用oracle oracle 的存储过程案例的存储过程案例 5.try5.try 6./1.6./1.加载驱动加载驱动 7.Class.forName(oracle.jdbc.driv

27、er.OracleDriver);7.Class.forName(oracle.jdbc.driver.OracleDriver);8./2.8./2.得到连接得到连接 9.Connection ct=DriverManager.getConnection(jdbc:o9.Connection ct=DriverManager.getConnection(jdbc:o racle:thin:127.0.0.1:1521:MYORA1,scott,m123);racle:thin:127.0.0.1:1521:MYORA1,scott,m123);11./3.11./3.创建创建Callable

28、StatementCallableStatement 12.CallableStatement cs=ct.prepareCall(call sp_pr3(?,?);12.CallableStatement cs=ct.prepareCall(call sp_pr3(?,?);13./4.13./4.给给?赋值赋值 14.cs.setString(1,SMITH);14.cs.setString(1,SMITH);15.cs.setInt(2,10);15.cs.setInt(2,10);17.cs.execute();17.cs.execute();18./18./关闭关闭 19.cs.cl

29、ose();19.cs.close();20.ct.close();20.ct.close();21.catch(Exception e)21.catch(Exception e)22.e.printStackTrace();22.e.printStackTrace();23.23.24.24.25.25.本讲稿第十六页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 1.1.使用各种使用各种if if 语句语句 2.2.使用循环语句使用循环语句 3.3.使用控制语句使用控制语句goto goto 和和nullnull;条件分支语句条件分支语句 pl/sql pl/sql

30、中提供了三种条件分支语句中提供了三种条件分支语句if ifthenthen,if if then then else else,if if then then elsif elsif then then 这里我们可以和这里我们可以和java java 语句进行一个比较语句进行一个比较 简单的条件判断简单的条件判断 if if thenn thenn 问题:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于问题:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于20002000,就,就 给该员工工资增加给该员工工资增加10%10%。Sql Sql 代码代码 1.create or rep

31、lace procedure sp_pro6(spName varchar2)is1.create or replace procedure sp_pro6(spName varchar2)is 2.-2.-定义定义 3.v_sal emp.sal%type;3.v_sal emp.sal%type;4.begin4.begin 5.-5.-执行执行 6.select sal into v_sal from emp where ename=spName;6.select sal into v_sal from emp where ename=spName;7.-7.-判断判断 8.if v_s

32、al2000 then8.if v_sal2000 then 9.update emp set sal=sal+sal*10%where ename=spName;9.update emp set sal=sal+sal*10%where ename=spName;10.end if;10.end if;11.end;11.end;12./12./本讲稿第十七页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 二重条件分支二重条件分支 if if then then else else 问题:编写一个过程,可以输入一个雇员名,如果该雇员的补助不是问题:编写一个过程,可以输入

33、一个雇员名,如果该雇员的补助不是0 0 就在原来就在原来 的基础上增加的基础上增加100100;如果补助为;如果补助为0 0 就把补助设为就把补助设为200200;Sql Sql 代码代码 1.create or replace procedure sp_pro6(spName varchar2)is1.create or replace procedure sp_pro6(spName varchar2)is 2.-2.-定义定义 3.v_comm m%type;3.v_comm m%type;4.begin4.begin 5.-5.-执行执行 6.select comm into v_co

34、mm from emp where ename=spName;6.select comm into v_comm from emp where ename=spName;7.-7.-判断判断 8.if v_comm0 then8.if v_comm0 then 9.update emp set comm=comm+100 where ename=spName;9.update emp set comm=comm+100 where ename=spName;10.else10.else 11.update emp set comm=comm+200 where ename=spName;11.

35、update emp set comm=comm+200 where ename=spName;12.end if;12.end if;13.end;13.end;14./14./本讲稿第十八页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 多重条件分支多重条件分支 if if then then elsif elsif thenn thenn 问题:编写一个过程,可以输入一个雇员编号,如果该雇员的职位是问题:编写一个过程,可以输入一个雇员编号,如果该雇员的职位是PRESIDENTPRESIDENT 就给他的工资增加就给他的工资增加10001000,如果该雇员的职位是,如

36、果该雇员的职位是MANAGER MANAGER 就给他的工资增加就给他的工资增加500500,其它职位的雇员工资增加其它职位的雇员工资增加200200。Sql Sql 代码代码 1.create or replace procedure sp_pro6(spNo number)is1.create or replace procedure sp_pro6(spNo number)is 2.-2.-定义定义 3.v_job emp.job%type;3.v_job emp.job%type;4.begin4.begin 5.-5.-执行执行 6.select job into v_job fro

37、m emp where empno=spNo;6.select job into v_job from emp where empno=spNo;7.if v_job=PRESIDENT then7.if v_job=PRESIDENT then 8.update emp set sal=sal+1000 where empno=spNo;8.update emp set sal=sal+1000 where empno=spNo;9.elsif v_job=MANAGER then9.elsif v_job=MANAGER then 10.update emp set sal=sal+500

38、 where empno=spNo;10.update emp set sal=sal+500 where empno=spNo;11.else11.else 12.update emp set sal=sal+200 where empno=spNo;12.update emp set sal=sal+200 where empno=spNo;13.end if;13.end if;14.end;14.end;15./15./16.16.本讲稿第十九页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 循环语句循环语句 looploop 是是pl/sql pl/sql 中最

39、简单的循环语句,这种循环语句以中最简单的循环语句,这种循环语句以loop loop 开头,以开头,以end loop end loop 结结 尾,这种循环至少会被执行一次。尾,这种循环至少会被执行一次。案例:现有一张表案例:现有一张表usersusers,表结构如下:,表结构如下:用户用户id|id|用户名用户名 请编写一个过程,可以输入用户名,并循环添加请编写一个过程,可以输入用户名,并循环添加10 10 个用户到个用户到users users 表中,用户表中,用户 编号从编号从1 1 开始增加。开始增加。Sql Sql 代码代码 1.create or replace procedure

40、sp_pro6(spName varchar2)is1.create or replace procedure sp_pro6(spName varchar2)is 2.-2.-定义定义:=:=表示赋值表示赋值 3.v_num number:=1;3.v_num number:=1;4.begin4.begin 5.loop5.loop 6.insert into users values(v_num,spName);6.insert into users values(v_num,spName);7.-7.-判断是否要退出循环判断是否要退出循环 8.exit when v_num=10;8.

41、exit when v_num=10;9.-9.-自增自增 10.v_num:=v_num+1;10.v_num:=v_num+1;11.end loop;11.end loop;12.end;12.end;13./13./本讲稿第二十页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 循环语句循环语句 while while 循环循环n n 基本循环至少要执行循环体一次,而对于基本循环至少要执行循环体一次,而对于while while 循环来说,只有条件为循环来说,只有条件为truetrue 时,才会执行循环体语句,时,才会执行循环体语句,while while 循环以循

42、环以while.loop while.loop 开始,以开始,以end loop end loop 结束。结束。案例:现有一张表案例:现有一张表usersusers,表结构如下:,表结构如下:用户用户id id 用户名用户名 问题:请编写一个过程,可以输入用户名,并循环添加问题:请编写一个过程,可以输入用户名,并循环添加10 10 个用户到个用户到users users 表中,表中,用户编号从用户编号从11 11 开始增加。开始增加。Sql Sql 代码代码 1.create or replace procedure sp_pro6(spName varchar2)is1.create or

43、replace procedure sp_pro6(spName varchar2)is 2.-2.-定义定义:=:=表示赋值表示赋值 3.v_num number:=11;3.v_num number:=11;4.begin4.begin 5.while v_num=20 loop5.while v_num=20 loop 6.-6.-执行执行 7.insert into users values(v_num,spName);7.insert into users values(v_num,spName);8.v_num:=v_num+1;8.v_num:=v_num+1;9.end loo

44、p;9.end loop;10.end;10.end;11./11./本讲稿第二十一页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 循环语句循环语句 for for 循环循环n n 基本基本for for 循环的基本结构如下循环的基本结构如下 Sql Sql 代码代码 1.begin1.begin 2.for i in reverse 1.10 loop2.for i in reverse 1.10 loop 3.insert into users values(i,3.insert into users values(i,xiaomingxiaoming););4.e

45、nd loop;4.end loop;5.end;5.end;本讲稿第二十二页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 我们可以看到控制变量我们可以看到控制变量i i,在隐含中就在不停地增加。,在隐含中就在不停地增加。顺序控制语句顺序控制语句 gotogoto,nullnull 1.goto 1.goto 语句语句 goto goto 语句用于跳转到特定符号去执行语句。注意由于使用语句用于跳转到特定符号去执行语句。注意由于使用goto goto 语句会增加程语句会增加程 序的复杂性,并使得应用程序可读性变差,所以在做一般应用开发时,建议大家序的复杂性,并使得应用程序

46、可读性变差,所以在做一般应用开发时,建议大家 不要使用不要使用goto goto 语句。语句。基本语法如下基本语法如下 goto lable goto lable,其中,其中lable lable 是已经定义好的标号名,是已经定义好的标号名,Sql Sql 代码代码 1.declare1.declare 2.i int:=1;2.i int:=1;3.begin3.begin 4.loop4.loop 5.dbms_output.put_line(5.dbms_output.put_line(输出输出i=|i);i=|i);6.if i=1 then6.if i=1 then 7.goto e

47、nd_loop;7.goto end_loop;8.end if;8.end if;9.i:=i+1;9.i:=i+1;10.end loop;10.end loop;11.11.12.dbms_output.put_line(12.dbms_output.put_line(循环结束循环结束););13.end;13.end;本讲稿第二十三页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 2.null2.null null null 语句不会执行任何操作,并且会直接将控制传递到下一条语句。使用语句不会执行任何操作,并且会直接将控制传递到下一条语句。使用nullnull 语

48、句的主要好处是可以提高语句的主要好处是可以提高pl/sql pl/sql 的可读性。的可读性。Sql Sql 代码代码 1.declare1.declare 2.v_sal emp.sal%type;2.v_sal emp.sal%type;3.v_ename emp.ename%type;3.v_ename emp.ename%type;4.begin4.begin 5.select ename,sal into v_ename,v_sal from emp where empno=5.select ename,sal into v_ename,v_sal from emp where em

49、pno=&no;&no;6.if v_sal 3000 then6.if v_sal 3000 then 7.update emp set comm=sal*0.1 where ename=v_ename;7.update emp set comm=sal*0.1 where ename=v_ename;8.else8.else 9.null;9.null;10.end if;10.end if;11.end;11.end;本讲稿第二十四页,共三十四页PL/SQL PL/SQL 块的结构和实例块的结构和实例 PL/SQLPL/SQL分页分页 编写分页过程编写分页过程 介绍介绍 分页是任何一个网

50、站分页是任何一个网站(bbs,(bbs,网上商城,网上商城,blog)blog)都会使用到的技术,因此学习都会使用到的技术,因此学习pl/sqlpl/sql 编程开发就一定要掌握该技术。编程开发就一定要掌握该技术。无返回值的存储过程无返回值的存储过程 储过程:储过程:案例:现有一张表案例:现有一张表bookbook,表结构如下:,表结构如下:书号书号 书名书名 出版社出版社 请写一个过程,可以向请写一个过程,可以向book book 表添加书,要求通过表添加书,要求通过java java 程序调用该过程。程序调用该过程。-in:-in:表示这是一个输入参数,默认为表示这是一个输入参数,默认为i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁