c# - 在oracle存储过程中使用CASE语句

标签 c# oracle stored-procedures

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

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

1.如果我在存储过程(SP)本身中编写多个CASE语句,那么记录集计数约为125。这里,SP的代码看起来有点乱。但从积极的一面来看,行数返回给客户端的较少。

2.如果我不使用 CASE 语句,则记录集计数为 @375。在这种方法中,我会将 SP 的“case”逻辑移至 C# 中间层...可能正在使用 LINQ/委托(delegate)。 .. 这里,SP 代码更干净,但返回的记录数量较多。

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

感谢您的阅读。

最佳答案

让数据库存储过程返回太多数据,然后让中间层/客户端进程筛选出无用的数据,这是一个糟糕的策略。不仅因为该过程会比过滤数据库中的结果集花费更长的时间来惩罚用户,而且会不必要地消耗可用于满足其他用户事件的资源(网络带宽、应用程序服务器周期)。

"Here, the SP code is cleaner but the number of records returned is high."

代码卫生是情人眼里出西施。我更喜欢拥有本身正确的程序单元,而不是依赖外部流程来使事情正确。特别是驻留在其他架构层上的外部流程。

关于c# - 在oracle存储过程中使用CASE语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3995243/

相关文章:

oracle - 使用 Oracle 12c 安装 Liferay 7 CE 时出错

java - 在两个平面表上编写 Hibernate 或 JPA native SQL

sql-server - 从 Sql Server 2000 上的存储过程插入临时表

c# - 垃圾收集操作

sql - 如果field为null,则拉取某些字段;否则,拉取其他字段

c# - 使用 LINQtoSQL 将记录计数值插入数据库表

SQL*Plus - 数字列显示十六进制字符

c# - ExecuteStoreQuery 未返回输出参数

c# - 这个非锁定的 TryGetValue() 字典访问线程安全吗?

c# - 插入排序算法c#