数据库中的存储过程

Posted celine

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中的存储过程相关的知识,希望对你有一定的参考价值。

定义:

所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过
编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数
来调用并执行它,从而完成一个或一系列的数据库操作。

oracle的存储过程优缺点:

1.存储过程可以使得程序执行效率更高、安全性更好,因为过程建立之后已经编译并且储存到数据库,直接写sql就需要先分析再执行因此过程效率更高,直接写sql语句会带来安全性问题,如:sql注入 ;

2.建立过程不会很耗系统资源,因为过程只是在调用才执行

3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量;

4.使用存储过程使您能够增强对执行计划的重复使用,由此可以通过使用远程过程调用 (RPC) 处理服务器上的存储过程而提高性能。RPC 封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值;

5.可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力;

6.代码精简一致,一个存储过程可以用于应用程序代码的不同位置;

7.增强安全性:

a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;

b、提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);

c、SqlParameter 类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。

缺点就是:

1、大量的利用过程,会对数据库服务器压力比较大。

存储过程的创建

Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

(1)无参存储过程语法

create or replace procedure NoParPro  
 as  //声明  
 ;  
 begin // 执行  
 ;  
 exception//存储过程异常  
 ;  
 end;

(2)带参存储过程实例

create or replace procedure queryempname(sfindno emp.empno%type)   
as  
   sName emp.ename%type;  
   sjob emp.job%type;  
begin  
       ....  
exception  
       ....  
end;

 



以上是关于数据库中的存储过程的主要内容,如果未能解决你的问题,请参考以下文章

当活动被破坏但我必须继续执行片段中的代码时该怎么办?

Java调用SQL Server的存储过程详解(转)

MySQL触发器

java 登录过程 - android片段,异步任务登录,Asp.net控制器,存储库

Android 上的 Kotlin:如何在片段中使用数据库中的 LiveData?

oracle中的存储过程,有啥作用,以及怎么在代码中使用?