Oracle数据库存储过程PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
6
参数
SQL中调用存储过程语句:
call procedure_name();
调用时”()”是不可少的,无论是有参数还是无参数。
定义对数据库过程的调用时 无参数过程:{ call procedure_name} 仅有输入参数的过程:{call procedure_name(?,?...)}
.
9
参数过程实例
仅有输出参数的存储过程
create or replace procedure stu_proc2(pname out student.sname%type) as begin select sname into pname from student where sno=1; dbms_output.put_line(pname); end; 此种存储过程不能直接用call来调用,这种情况的调用将在下面oracle函数调用
➢ 过程是有名称的程序块,as关键词代替了无名块的 declare.
.
5
创建过程实例
创建名为stu_proc的过程,create是创建过程的标识符,replace表示若同名过程存在将覆盖原过程.该过程定 义了一个变量,其类型和student数据表中的sname字段类型相同,都是字符型,将数据表中的sno字段为1的 sname字段内容送入变量中,然后输出结果.
中说明
.
11
Oracle函数调用存储过程
我们已经学习了oracle函数,下面就针对参数的4种 情况分别举出实例说明函数对存储过程的调用
.
12
函数调用存储过程实例
对无参数过程的调用:
--函数
create or replace function get_pname return varchar2 is pname varchar2(20); begin stu_proc;
5)使用存储过程,可以实现存储过程设计和编码工作 分开进行,只要将存储过程名、参数、及返回信息 告诉编码人员即可;
6)但使用存储过程封装业务逻辑将限制应用程序的可 移植性;另外,如果更改存储过程的参数或者其返 回的数据及类型的话,需要修改应用程序的相关代 码,比较繁琐。
.
4
过程的语法结构
➢ 完整的过程结构如下: create or replace procedure 过程名 as 声明语句段; begin 执行语句段; exception 异常处理语句段; end;
这里?表示输入参数,创建存储过程时用in表示输入参数
仅有输出参数的过程:{ Call procedure_name(?,?...)}
这里的?表示输出参数,创建存储过程时用out表示输入参数
既有输入参数又有输出参数的过程 {call procedure_name(?,?...)}
这里的?有表示输出参数的,也有表示输入参数的
中说明
.
10
参数过程实例
有输入\输出参数的存储过程:
create or replace procedure stu_proc3 (pno in student.sno%type,pname out student.sname%type) as begin select sname into pname from student where sno=pno; dbms_output.put_line(pname); end; 此种存储过程不能直接用call来调用,这种情况的调用将在下面oracle函数调用
下面将会对这4种情况分别举出实例!!!
.wk.baidu.com
7
参数过程实例
无参数存储过程:
create or replace procedure stu_proc as pname varchar2(25); begin select sname into pname from student where sno=1; dbms_output.put_line(pname); end;
.
8
参数过程实例
仅有输入参数的过程
create or replace procedure stu_proc1(pno in student.sno%type) as pname varchar2(25); begin select sname into pname from student where sno=pno; dbms_output.put_line(pname); end;
select sname into pname from student where sno=1;
return pname; end;
--调用
declare begin dbms_output.put_line('在PL/SQL中打印的结果:'||get_pname); end;
Oracle数据库存储过程
.
1
过程
过程就是高级程序设计语言中的模块的概念,将一些 内部联系的命令组成一个个过程,通过参数在过程之 间传递数据是模块化设计思想的重要内容.
.
2
存储过程特点
1)存储过程是预编译过的,并且经优化后存储于 SQL内存中,使用时无需再次编译,提高了工作效 率;
2)存储过程的代码直接存放于数据库中,一般由客 户端直接通过存储过程的名字进行调用,减少了网 络流量,加快了系统执行速度,例如在进行百万以 上的大批量数据查询时,使用存储过程分页要比其 他方式分页快得多;
或者
create or replace procedure stu_proc as pname student.sname%type; begin select sname into p_name from student where sno=1; dbms_output.put_line(pname); end;
3)使用存储过程可以减少SQL注入式攻击,提高了 系统的安全性,执行存储过程的用户要具有一定的 权限才能使用存储过程,没有数据操作权限的用户 只能在其控制下间接地存取数据;
.
3
存储过程特点
4)在同时进行主、从表及多表间的数据维护及有效性 验证时,使用存储过程比较方便,而且可以有效利 用SQL中的事务处理的机制;