Я просматривал какой-то старый код, написанный в прошлые годы другим разработчиком в моей организации. Пытаясь улучшить этот код, я обнаружил, что в используемом им запросе возникла очень серьезная проблема.
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.
Странная вещь?
Этот код работает.
Вид сетки успешно связывается. (Это не пытается привязать к этой области.) И это было в производстве в течение многих лет.
Итак, мой вопрос ... почему? Я никогда не видел плохой запрос работы. Я никогда не видел, чтобы Oracle позволял это или провайдер данных взламывал это.
Кто-нибудь знает, что здесь происходит?