在单独的存储过程中编写整个查询

Writing entire queries in individual stored procedures

我有一个在 .NET 中开发的应用程序,并通过 SQL Server 2008、.NET Framework 4.0 中的存储过程进行查询。

在存储过程中我有两套:

  1. 每个存储过程仅包含一个来自 table

  2. 的查询
  3. 一个存储过程具有与之相关的整个查询table

示例:

IF @Type = 'Select'
   'query'

IF @Type = 'Search'
   ''query

由于我已经开发了应用程序并使用了这两个集合,所以我很困惑为 table(第 2 组)编写整个查询是否是一个好习惯?

这样做有什么好处还是遵循不好的编码习惯(即在单独的存储过程中编写多个查询)

请建议我遵循的选项。

谢谢

如果将与某个 table 相关的所有查询(INSERT/UPDATE/DELETE 和 SELECT)保存在单个存储过程中,我可以想到这种方法的几个问题:

第一,安全。授予某人执行过程的权限,您可能授予他不必要的权限。

其次,编译时间随着内部代码的增加而增加。

第三,定义更多参数并通过网络发送。

第四,程序的输出没有明确定义。

第五,服务。

第六,别这样:)

希望对您有所帮助。

我想有些人会不同意我的看法,但在我看来这是一种不好的做法。编写分成大量函数(或本例中的存储过程)的简短、不言自明的代码总是比编写包含许多实际上并不属于一起的部分的长代码要好。

永远想想如何让这个可怜的混蛋在 18 个月后不得不使用你正在编写的代码,因为你很可能会成为那个可怜的混蛋。