【发布时间】:2011-04-30 21:08:52
【问题描述】:
我正在浏览一些旧代码,这些旧代码是由我所在组织的另一位开发人员在几年前编写的。在尝试改进此代码时,我发现它使用的查询有一个非常糟糕的问题。
OdbcDataAdapter financialAidDocsQuery =
new OdbcDataAdapter(
@"SELECT a.RRRAREQ_TREQ_CODE,
b.RTVTREQ_SHORT_DESC,
a.RRRAREQ_TRST_DESC,
RRRAREQ_STAT_DATE,
RRRAREQ_EST_DATE,
a.RRRAREQ_SAT_IND,
a.RRRAREQ_SBGI_CODE,
b.RTVTREQ_PERK_MPN_FLAG,
b.RTVTREQ_PCKG_IND,
a.RRRAREQ_MEMO_IND,
a.RRRAREQ_TRK_LTR_IND,
a.RRRAREQ_DISB_IND,
a.RRRAREQ_FUND_CODE,
a.RRRAREQ_SYS_IND
FROM FAISMGR.RRRAREQ a, FAISMGR.RTVTREQ b
WHERE a.RRRAREQ_TREQ_CODE = b.RTVTREQ_CODE
and a.RRRAREQ_PIDM = :PIDM
AND a.RRRAREQ_AIDY_CODE = :AidYear ",
this.bannerOracle);
financialAidDocsQuery.SelectCommand.Parameters.Add(":PIDM", OdbcType.Int, 32).Value = this.pidm;
financialAidDocsQuery.SelectCommand.Parameters.Add(":AidYear", OdbcType.Int, 32).Value = this.aidYear;
DataTable financialAidDocsResults = new DataTable();
financialAidDocsQuery.Fill(financialAidDocsResults);
FADocsGridView.DataSource = financialAidDocsResults;
FADocsGridView.DataBind();
问题是a.RRRAREQ_TRST_DESC 列不存在。在 Oracle SQL Developer 中运行它时,您会很快了解到这一点。
奇怪的事情?
此代码有效。
gridview 绑定成功。 (它不会试图绑定到那个领域。)而且它已经投入生产多年了。
那么,我的问题是……为什么?我从未见过糟糕的查询工作。我从未见过甲骨文允许它或数据提供者绕过它。
有人知道这里发生了什么吗?
【问题讨论】:
-
奇怪... RRRAREQ_TRST_DESC 曾经存在过吗?
-
那些列名让我头疼
-
它是否会导致处理异常,而 else 正在执行有效的查询并绑定它?你确定它真的用过吗?不是没有实际引用的残留代码吗?
-
您确定您是在正确的数据库或确实有该列的某个备份数据库上运行此查询吗?
-
我和萨钦在一起。如果这段代码正在执行,那么我的查询没有命中你认为的数据库。
标签: c# sql oracle gridview odbc