存储过程与视图的区别

一、什么是存储过程:

存储过程(Stored Procedure)是在大型 数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次后永久编译有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

优点:

1、存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2、当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

3、存储过程可以重复使用,可减少数据库开发人员的工作量

4、安全性高,可设定只有某些用户才具有对指定存储过程的使用权

缺点:

1、调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。

2、移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。

3、重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。

二、什么是视图:

oracle视图可以理解为数据库中一张虚拟的表,他是通过一张或者多张基表进行关联查询后组成一个虚拟的逻辑表。查询视图,本质上是对表进行关联查询。

 从用户视角看,一个视图是从一个特定的角度来查看数据库中的数据;从数据库内部看,一个视图是由SELECT语句组成的查询定义的虚拟表。视图的本身是不包含任何数据,只是一个查询结果,不能增删改,当基表的数据发生变化时,视图里面的数据也会跟着发生变化。

优点:

1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。

2.用户通过简单的查询可以从复杂查询中得到结果。

3.维护数据的独立性,试图可从多个表检索数据。

4.对于相同的数据可产生不同的视图。

三:存储过程和视图的区别:

1、范围不同:

存储过程:范围要广很多。存储过程和视图都是相当于执行一段已经编译好的sql脚本 而区别在与存储过程可以提供参数、输入参数 以及每次返回多个表数据

视图:一次只能返回一个二维表的数据 且不能接受 任何参数。

2、目的不同:

存储过程:往往涉及很多的数据处理,是一个复杂的过程,它相当于一个函数可以接受参数,主要用于处理数据;

视图:把现有数据以新的形式展现出来,最终目的是为了呈现数据。

3:总结:

视图就是张虚拟表,可以像对真实表一样对其进行操作,而存储过程是一组sql语句的批处理

你可能感兴趣的:(ORACLE学习笔记,sql,数据库)