何时使用函数以及何时使用SQL Server中的存储过程?何时使用函数以及何时使用SQL Server中的存储过程
我想了解一下人们的想法和经验。另外,想知道何时使用视图。我不在寻找这些数据库对象的定义。一个实际的场景讨论会很好
何时使用函数以及何时使用SQL Server中的存储过程?何时使用函数以及何时使用SQL Server中的存储过程
我想了解一下人们的想法和经验。另外,想知道何时使用视图。我不在寻找这些数据库对象的定义。一个实际的场景讨论会很好
在我的日常工作中,例如,我使用sp来检索,存储,更新和删除记录,我大多数时间从Web应用程序执行这些sps,但有时候某些sp需要一些sp复杂或重复的操作,然后我使用一个函数来重用该操作(如果需要的话)或在我的sp中留下更干净的代码。
我们通常不使用视图,但为简单起见,您可以使用它们,如果您只是调用视图,则不需要使用连接进行相同的长选择命令。
这是我的经验,为我的英语:)。
在我看来,使用SPs来读取数据是一种非常不好的习惯。
您一定要分清
之间
查看:这和特设的TV-UDF一样好。您可以用模式声明它绑定和处理它几乎一样,如果它是一个表(索引等)...
Fazit:使用SP可获得UPDATE,DELETE,任何类型的数据或结构操纵但而不是单读。
为什么使用SP读取数据是一个非常不好的习惯? – zedfoxus
正如我在答案中写到的,最大的缺陷是在执行**之后使用resultset **。 TV-UDF的返回可以像SELECT * FROM dbo.MyFunction(@ prm1,@ prm2)那样简单,或者可以直接在JOIN或APPLY中使用。这将**从未**与SP一起工作。其次,内联呼叫总是在性能上更好。有一些非常罕见的情况(例如,您必须使用动态SQL),当SP有利于读取数据时。 – Shnugo
了解。我对此有不同的看法。当多个应用程序(C#,Java等)正在调用本地检索信息和处理信息时,我很欣赏使用通用SP检索数据,而不是编写参数化SQL语句的应用程序。 SP中复杂的基于光标的业务逻辑也帮助了我。所以我的感觉是,通过SP的CRUD有它的位置;正如你提到的那样,UDF也有它的位置。 – zedfoxus