Запрос ASP.NET DataAdapter недействителен, пока запрос работает - PullRequest
0 голосов
/ 23 мая 2011

Я начал использовать DataSet в своем веб-приложении ASP.net примерно 6 месяцев назад.Это прекрасный инструмент, позволяющий мне быстро разрабатывать приложение MVC без необходимости выполнять всю грязную работу при подключении / запросах к БД.

Но сегодня я столкнулся с какой-то странной проблемой.Он начался с этого запроса:

select a.MR_PART_CODE as PART_CODE,

       b.PART_DESC as PART_DESC, 
       b.PM_MAD_CAT_CODE as CATEGORY, 
       c.MPC_MIN_QTY as CAT_SS, 
       a.MR_MAX_LEAD_TIME as LEAD_TIME, 
       a.MR_MAD as MAD, 
       ROUND((a.MR_MAD * a.MR_MAX_LEAD_TIME)) as CAL_SS, 
       greatest(ROUND((a.MR_MAD * a.MR_MAX_LEAD_TIME)),c.MPC_MIN_QTY) as SS,
       d.SOH as SOH, 
       d.SOO as SOO,
       (select sum(back_order) from STK_REQUEST where part_code=b.part_code) as BO,
       (d.SOH+a.MR_SOO) as AVAIL,
       ((d.SOH + a.MR_SOO)-greatest(ROUND((a.MR_MAD * a.MR_MAX_LEAD_TIME)),c.MPC_MIN_QTY)) as ROQ,
       (d.SOH - greatest(ROUND((a.MR_MAD * a.MR_MAX_LEAD_TIME)),c.MPC_MIN_QTY) ) as VAR,
       a.MR_REMARKS as REMARKS           
    from ROQ a, PART_MASTER b, MAD_PARTS_CATEGORY c, PART_STATS d
    where a.MR_PART_CODE = b.PART_CODE
    and d.PART_CODE = b.PART_CODE
    and b.PM_MAD_CAT_CODE = c.MPC_CAT_CODE
    and b.RETIRE_FLAG = 'N'
    and a.mr_year = (select max(mr_year) from roq)
    and a.mr_month = (select max(mr_month) from roq where mr_year= (select max(mr_year) from roq))
    and a.mr_period = (select max(mr_period) from roq where mr_month=(select max(mr_month) from roq where mr_year= (select max(mr_year) from roq)) and mr_year= (select max(mr_year) from roq))
    and     greatest(ROUND((a.MR_MAD * a.MR_MAX_LEAD_TIME)),c.MPC_MIN_QTY) > d.SOH`

Запрос в Toad for Oracle прошел нормально, но, очевидно, он завершился неудачно, когда я попытался настроить новый объект в объекте DataAdapter.В этой строке написано что-то вроде «Ошибка в списке аргументов функции: SELECT не распознан»: (select sum(back_order) from STK_REQUEST where part_code=b.part_code) as BO

Что я сделал не так?

К вашему сведению, база данных - Oracle.

1 Ответ

0 голосов
/ 23 мая 2011

Кажется, это исключение из некоторого ASP-класса, пытающегося проанализировать ваш SQL. Если бы сообщение пришло из Oracle, был бы номер ошибки ORA-xxxxx.

Вы не должны помещать SQL в ASP. Вместо этого создайте вид, возможно, тогда все в порядке.

...