【问题标题】:Using CASE statement in a oracle stored proc在 oracle 存储过程中使用 CASE 语句
【发布时间】:2011-04-29 01:22:27
【问题描述】:

我有一个 .Net 3.5 windows 应用程序。其中一个模块使用 Oracle 存储过程,它将记录集返回给 C# 客户端。

我只想知道以下两种方法中哪一种更好[wrt.代码可读性和性能。]:

1.如果我在stored proc(SP)本身中写了一个multiple CASE语句,那么记录集计数大约是125。这里,SP的代码看起来有点乱。但是从好的方面来说,行数返回给客户的数量更少。

2.如果我不使用 CASE 语句,那么记录集计数是@375。在这种方法中,我会将 SP 的“case”逻辑移动到 C# 中间层...可能使用 LINQ/委托。 .. 在这里,SP 代码更干净,但返回的记录数很高。

那么,我应该采用方法 1 还是方法 2?

感谢阅读。

【问题讨论】:

    标签: c# oracle stored-procedures


    【解决方案1】:

    这取决于服务器负载和安全策略。 我更喜欢 1),但如果你需要一个真正可用的 sql server,你应该更喜欢 2) 以减轻 sql server 的负载。

    【讨论】:

      【解决方案2】:

      让数据库存储过程返回太多数据然后让中间层/客户端进程剔除谷壳是不好的策略。不仅因为该过程会通过比过滤数据库中的结果集花费更长的时间来惩罚用户,而且还会不必要地消耗可用于满足其他用户活动的资源(网络带宽、应用服务器周期)。

      "这里的 SP 代码更简洁,但是 返回的记录数很高。”

      代码卫生在旁观者的眼中。我更喜欢拥有本身正确的程序单元,而不是依靠外部流程来使事情正确。尤其是驻留在其他架构层的外部进程。

      【讨论】:

      • 您好,感谢您的 cmets...“网络带宽、应用服务器周期消耗”的论点在厚客户端 .net 应用程序的情况下是否同样适用...例如桌面应用程序案例?我确信它会影响基于 Web 的应用程序。
      • @jimmy - 显然,如果我们谈论的是前端和数据库位于同一台物理机器上的应用程序,则影响会大大降低。但是 - 在我看来 - 这并没有扭转“正确性”的平衡。
      猜你喜欢
      • 1970-01-01
      • 2019-07-23
      • 2019-01-24
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      相关资源
      最近更新 更多