调用存储过程详解精选PPT.ppt
《调用存储过程详解精选PPT.ppt》由会员分享,可在线阅读,更多相关《调用存储过程详解精选PPT.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、调用存储过程详解第1页,此课件共34页哦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 语言,还可以定义变量和常量,允许使用条件语句和语言,还可以定义变量和常量,允许使用条件语句和 循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。第2页,此课件共34页哦PL/SQL PL/SQL 块的结构和实例块的结构和实例 学习必要性学习必要性 1.1.提高应用程序的运行性能提高应用程序的运行性能 2.2.模块化的设计思想模块化的设计思想【分页的过程,订单的过程,转账的过程。分页的过程,订单的过程,转账的过程。】3.3.减少网络传
3、输量减少网络传输量 4.4.提高安全性(提高安全性(sql sql 会包括表名,有时还可能有密码,传输的时候会泄露。会包括表名,有时还可能有密码,传输的时候会泄露。PL/SQLPL/SQL 就不会)就不会)为什么为什么PL/SQL PL/SQL 会快呢?会快呢?不好的地方:不好的地方:移植性不好(换数据库就用不了)移植性不好(换数据库就用不了)第3页,此课件共34页哦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;/第4页,此课件共34页哦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);第5页,此课件共34页哦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.);程序调用);程序调用 第6页,此课件共34页哦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;第7页,此课件共34页哦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 可以做什么可以做什么 简单分类简单分类 过程过程(存储过程存储过程)函数函数 块块(编程编程)触发器触发器 包包第8页,此课件共34页哦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、 第9页,此课件共34页哦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 编程结构做一个简单的比较。编程结构做一个简单的比较。第10页,此课件共34页哦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_
17、line 就是就是dbms_output dbms_output 包的一个过程。包的一个过程。第11页,此课件共34页哦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_e
18、name 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;相关说明:相关说明:&表示要接收从控制台输入的变量表示要接收从控制台输入的变量 第12页,此课件共34页哦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.-定义变量定义变量
21、3.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_outpu
22、t.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./第13页,此课件共34页哦PL/SQL PL/SQL 块的结构和实例块的结构和实例 pl/sqlp
23、l/sql分类分类 -过程,函数,包,触发器过程,函数,包,触发器 过程过程 过程用于执行特定的操作,当建立过程时,既可以指定输入参数过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in)(in),也可以指,也可以指 定输出参数定输出参数(out)(out),通过在过程中使用输入参数,可以将数据传递到执行部分;通过在过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行部分的数据传递到应用环境。在通过使用输出参数,可以将执行部分的数据传递到应用环境。在sqlplus sqlplus 中可以中可以 使用使用create procedure create proced
24、ure 命令来建立过程。命令来建立过程。第14页,此课件共34页哦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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 调用 存储 过程 详解 精选 PPT
限制150内