我没有理解存储函数和视图之间的区别。 在SELECT中使用视图将执行查询并返回结果,但存储函数执行相同的操作,不是吗?那么区别是什么呢?当我使用观看次数和存储函数?
时答案 0 :(得分:5)
查看:强>
视图是虚拟table
。它不实际存在。相反,它是由查询joining
创建的一个或多个tables
。查看returns a table
。
存储过程:存储过程是一组编译成单个执行计划的Transact-SQL
语句。
存储过程returns Output parameters
,return codes
(始终为整数值),
存储过程中包含的每个SELECT
语句或存储过程调用的任何其他存储过程的结果集,可以在存储过程外引用的全局游标。
存储过程的主要优势包括Precompiled execution
,reduced client/server traffic
,efficient reuse of code
,programming abstraction
和enhanced security controls
。
<强>更新强>
存储函数是一个命名的PL / SQL块,类似于一个过程。过程和函数之间的主要区别在于,函数必须始终返回值,但过程可能会也可能不会返回值。 1)返回类型:标题部分定义函数的返回类型。返回数据类型可以是任何oracle数据类型,如varchar,number等。 2)执行和异常部分都应返回一个值,该值是标题部分
中定义的数据类型答案 1 :(得分:1)
您可以让存储的函数返回大多数数据库中视图的相同数据。
我的区别在于执行了一个函数,并从中选择了一个视图。
视图将表现为表格。
答案 2 :(得分:0)
视图将特定的预定义语句作为一个结果集返回。
函数返回单个值或单个结果集。然而,这可能与不同类型的数据库不同。
多个db实现也有存储过程,其结果可以是单个返回值,结果集或多个结果集。
答案 3 :(得分:0)
变得简单(请开始阅读有关SQL的书):视图看起来像一个表,因此您可以对结果进行过滤,过滤器将有效地成为视图执行的一部分,或者进行连接。 SP不允许这样做,但逻辑更多。其余的......在文档中。
答案 4 :(得分:0)
这些永远不可能比较,这些完全不同 方法
视图是output
的{{1}},并且会生成表格的query
,并且不接受输入参数。
主要区别在于存储过程可以改变您的数据,在哪里 作为一个观点只返回它,我相信从性能点 视图,存储过程更好,因为它缓存执行计划和 结果会跑得更快。
storedprocedure / function是一组预先执行的sql语句,它接受参数。它可以减少网络流量,提供更快的性能等。
编程语言中的SQL函数是用于封装频繁执行的逻辑的子例程。这些有点放慢了表现。
检查这些SQL View,SQL Stored Procedures和SQL User-Defined Functions
我的意见是SQL存储过程(存储函数)使用起来要好得多,因为它也对结果集提供自定义操作。
答案 5 :(得分:0)
根据我的经验,我正在向你分享我的知识:
注意:对于从表中选择数据并且我们再次从SELECT
运行JOIN
语句的表,视图是SELECT
语句(有/无VIEWS
)由于内部操作为(SELECT * FROM ( SELECT * FROM TargetTable )
)
因此,最好使用存储函数
函数是计算值,不能对SQL Server执行永久性环境更改(即不允许INSERT或UPDATE语句)。
如果函数返回标量值,则可以在SQL语句中内联使用;如果返回结果集,则可以将其连接在一起。
另请参阅此处以进行效果比较:SQL-Server Performance: What is faster, a stored procedure or a view?