0

这是一个简单的“记录是否存在”问题的最安全/最佳代码:

. . . // "oc" is an OracleConnection component
const string sql = "SELECT COUNT(*) FROM CONGRESS WHERE IQ > WEIGHT"; //Most politicians have more pounds than sense
try {
    using (OracleCommand ocmd = new OracleCommand(sql, oc)) {
        return Convert.ToInt32(ocmd.ExecuteScalar()) > 0;
    }
. . . // the rest elided to spare the vertical scroll-bar bearings

?

4

1 回答 1

3

就像是

SELECT 1
  FROM dual
 WHERE EXISTS( SELECT 1
                 FROM congress
                WHERE iq > weight )

可能是最安全的选择,因为这允许 Oracle 在找到匹配行后立即停止执行查询,而不是扫描整个表以获得准确的计数。就像是

SELECT COUNT(*) 
  FROM congress
 WHERE iq > weight
   AND rownum <= 1

也应该做同样的事情。在我看来,第一个查询更能表达您的意图,但也更冗长。

于 2012-06-14T17:42:28.433 回答