视图与存储过程
视图和存储过程是两种类型的数据库对象。视图是一种存储查询,从一个或多个表收集数据。这里是创建视图的语法
创建或替换视图视图名称
作为
选择语句;
存储过程是预编译的SQL命令集,存储在数据库服务器中。每个存储过程都有一个调用名,用于在其他包、过程和函数中调用它们。这是(在ORACLE中)创建存储过程的语法,
创建或替换过程程序重命名(参数)
是
开始
声明;
例外
异常处理
结束;
视图
视图充当虚拟表。它在它的主体中隐藏了一个select语句。这个select语句可能非常复杂,它从多个表和视图获取数据。因此,换句话说,视图是一个命名的select语句,它存储在数据库中。视图可用于向最终用户隐藏表关系背后的逻辑。由于视图是存储查询的结果,因此它不保留任何数据。它从基表收集数据并显示。视图在数据安全中也扮演着重要的角色。当表所有者只需要向最终用户显示一组数据时,创建视图是一个不错的解决方案。视图可分为两类
- 可更新视图(可用于**、更新和删除的视图)
- 不可更新视图(不能用于**、更新和删除的视图)
可更新视图不能包括以下内容:,
集合运算符(相交、减号、并集、并集全部)
独特的
组聚合函数(AVG、COUNT、MAX、MIN、SUM等)
GROUP BY子句
按条款排序
CONNECT BY子句
开头从句
选择列表中的集合表达式
选择列表中的子查询
联接查询
存储过程
存储过程被命名为编程块。他们必须有一个名字。存储过程接受参数作为用户输入,并根据过程背后的逻辑进行处理并给出结果(或执行特定操作)。变量声明、变量分配、控制语句、循环、SQL查询和其他函数/过程/包调用可以在过程体中。
视图和存储过程有什么区别?让我们看看这两者之间的区别。•视图充当虚拟表。它们可以直接在from-close-of-SQL查询(select)中使用,但过程不能用在from-close-of-SQL查询中。•视图只有一个select语句作为其主体,但过程可以有变量声明、变量赋值、控制语句、循环,SQL查询和其他函数/过程/包调用作为其主体。•过程接受要执行的参数,但视图不希望执行参数。•可以使用%ROWTYPE从视图中创建记录类型,但使用过程无法创建记录类型。•SQL提示可用于view select语句中,优化执行计划,但不能在存储过程中使用SQL提示。•可以对视图授予DELETE、INSERT、UPDATE、SELECT、FLASHBACK和DEBUG,但只能对过程授予EXECUTE和DEBUG。 |