powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Окно CPU при запросе
9 сообщений из 9, страница 1 из 1
Окно CPU при запросе
    #39550143
olgarx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Выпадает окно CPU при отработке запроса на одной строке в Delphi.
Удаляю строку (//сортировка). Ошибки нет.
При отработке запроса в PL/SQL все нормально, без ошибок.
Почему в Delphi не работает эта сортировка?
Спасибо.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
DM.ADOQ_DTJ32.SQL.Clear;
DM.ADOQ_DTJ32.Active:=false;
DM.ADOQ_DTJ32.sql.Add('select vagon_registers_id, vagon_num, order_num, date_order, order_num_dtj, date_order_dtj,');
DM.ADOQ_DTJ32.sql.Add('station_out_id,station_dosylka_id, station_in_id, goods_code_id,goods_mass, kontainer_num, kontainer_mass,tariff_summ,koef_vpk,ktj_summ,');
DM.ADOQ_DTJ32.sql.Add('dg.goods_short_name  as dg_name, ds1.station_name as ds1, ds2.station_name as ds2, ds3.station_name as ds3,');
DM.ADOQ_DTJ32.sql.Add('dc1.contragent_name  as consignor_name,dc2.contragent_name  as consignee_name,train_id,natural_list_num,');
DM.ADOQ_DTJ32.sql.Add('mt.moving_tipes_name as moving_type_id,dtj_distance.distance_length as len,rt.rent_name as rent_id,country_id,vagon_date_out,time_date_out,');
DM.ADOQ_DTJ32.sql.Add('vagon_date_in,time_date_in,vt.vagon_type_short as vagon_type_id,scan_name,scan_name_dtj,punkt_perexoda_id,pp.punkt_name as punkt_name,');
DM.ADOQ_DTJ32.sql.Add('row_number() OVER (PARTITION BY order_num ORDER BY date_order DESC) AS num');              //сортировка
DM.ADOQ_DTJ32.sql.Add('From Dtj_Reestr');
DM.ADOQ_DTJ32.sql.Add('left join dtj_stations ds1 on dtj_reestr.station_out_id = ds1.station_code');
DM.ADOQ_DTJ32.sql.Add('left join dtj_stations ds2 on dtj_reestr.station_dosylka_id = ds2.station_code');
DM.ADOQ_DTJ32.sql.Add('left join dtj_stations ds3 on dtj_reestr.station_in_id = ds3.station_code');
DM.ADOQ_DTJ32.sql.Add('left join dtj_goods dg on dtj_reestr.goods_code_id = dg.goods_code');
DM.ADOQ_DTJ32.sql.Add('left join dtj_contragents dc1 on dtj_reestr.consignor_id = dc1.contragent_code');
DM.ADOQ_DTJ32.sql.Add('left join dtj_contragents dc2 on dtj_reestr.consignee_id = dc2.contragent_code');
DM.ADOQ_DTJ32.sql.Add('left join dtj_punkty_perexoda pp on dtj_reestr.punkt_perexoda_id = pp.punkt_code');
DM.ADOQ_DTJ32.sql.Add('left join dtj_vagon_type vt on dtj_reestr.vagon_type_id = vt.vagon_type_id');
DM.ADOQ_DTJ32.sql.Add('left join dtj_moving_types mt on dtj_reestr.moving_type_id = mt.moving_tipes_id');
DM.ADOQ_DTJ32.sql.Add('left join dtj_rent_type rt on dtj_reestr.rent_id = rt.rent_id');
DM.ADOQ_DTJ32.sql.Add('left join dtj_distance on dtj_reestr.distance_id = dtj_distance.distance_id');                                    //ошибка!
DM.ADOQ_DTJ32.SQL.Add('where status is null and control_date between to_date('''+DateToStr(DateTimePicker1.Date)+''', ''dd.mm.yyyy'')');
DM.ADOQ_DTJ32.sql.Add('and to_date('''+DateToStr(DateTimePicker2.Date)+''', ''dd.mm.yyyy'')');
DM.ADOQ_DTJ32.sql.Add('and (GOODS_CODE_ID = 2000 or GOODS_CODE_ID = 3000');
DM.ADOQ_DTJ32.sql.Add('or order_num Like ''%F'' or KONTAINER_NUM is not null)');
DM.ADOQ_DTJ32.sql.Add('order by vagon_registers_id,num');
DM.ADOQ_DTJ32.Active:=true;



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
select vagon_registers_id, vagon_num, order_num, date_order, order_num_dtj, date_order_dtj,
station_out_id,station_dosylka_id, station_in_id, goods_code_id,goods_mass, kontainer_num, kontainer_mass,tariff_summ,koef_vpk,ktj_summ,
dg.goods_short_name  as dg_name, ds1.station_name as ds1, ds2.station_name as ds2, ds3.station_name as ds3,
dc1.contragent_name  as consignor_name,dc2.contragent_name  as consignee_name,train_id,natural_list_num,
mt.moving_tipes_name as moving_type_id,dtj_distance.distance_length as len,rt.rent_name as rent_id,country_id,vagon_date_out,time_date_out,
vagon_date_in,time_date_in,vt.vagon_type_short as vagon_type_id,scan_name,scan_name_dtj,punkt_perexoda_id,pp.punkt_name as punkt_name,
row_number() OVER (PARTITION BY order_num ORDER BY date_order DESC) AS num
From Dtj_Reestr
left join dtj_stations ds1 on dtj_reestr.station_out_id = ds1.station_code
left join dtj_stations ds2 on dtj_reestr.station_dosylka_id = ds2.station_code
left join dtj_stations ds3 on dtj_reestr.station_in_id = ds3.station_code
left join dtj_goods dg on dtj_reestr.goods_code_id = dg.goods_code
left join dtj_contragents dc1 on dtj_reestr.consignor_id = dc1.contragent_code
left join dtj_contragents dc2 on dtj_reestr.consignee_id = dc2.contragent_code
left join dtj_punkty_perexoda pp on dtj_reestr.punkt_perexoda_id = pp.punkt_code
left join dtj_vagon_type vt on dtj_reestr.vagon_type_id = vt.vagon_type_id
left join dtj_moving_types mt on dtj_reestr.moving_type_id = mt.moving_tipes_id
left join dtj_rent_type rt on dtj_reestr.rent_id = rt.rent_id
left join dtj_distance on dtj_reestr.distance_id = dtj_distance.distance_id
where status is null 
and control_date BETWEEN to_date('01.10.2017','dd.mm.yyyy') and to_date('01.11.2017','dd.mm.yyyy')
and (GOODS_CODE_ID = 2000 or GOODS_CODE_ID = 3000
or order_num Like '%F' or KONTAINER_NUM is not null)
order by vagon_registers_id,num;
...
Рейтинг: 0 / 0
Окно CPU при запросе
    #39550150
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olgarx,

Код: plsql
1.
DM.ADOQ_DTJ32.sql.Add('order by vagon_registers_id,num;');

- может так поможет?
...
Рейтинг: 0 / 0
Окно CPU при запросе
    #39550151
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала, расставь алиасы.

Потом отлови запрос, который на самом деле уходит на сервер при ошибке. Скорее всего, проблема не в самом запросе, а в возвращаемых данных или кривой подстановке даты.

И ты как минимум слегка лукавишь. Если "удалить строку сортировка", то ошибка будет обязательно.
...
Рейтинг: 0 / 0
Окно CPU при запросе
    #39550160
olgarx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, ошибки нет. Если имеется в виду, что нужно удалить запятую в строке выше и в нижней строке удалить "num" из сортировки, то это сделано.
...
Рейтинг: 0 / 0
Окно CPU при запросе
    #39550190
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSDAORA или OraOLEDB? Если первый, может он не в курсе таких конструкций...
...
Рейтинг: 0 / 0
Окно CPU при запросе
    #39550215
olgarx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ma1tus, OraOLEDB
...
Рейтинг: 0 / 0
Окно CPU при запросе
    #39550377
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olgarx,

а попробуйте убрать сортировку по полю num в качестве теста. И если есть текст ошибки, тоже не мешало бы на нее глянуть, для более расширенного понимания проблемы.
...
Рейтинг: 0 / 0
Окно CPU при запросе
    #39550657
olgarx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL, та же ошибка
...
Рейтинг: 0 / 0
Окно CPU при запросе
    #39550709
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envотлови запрос, который на самом деле уходит на сервер при ошибке
Это сделано?

Если падает клиент до запроса к серверу - проблема в компоненте доступа, которая зачем-то лезет парсить запрос.
Если запрос проходит, но падает на результате - проверять _полный_ результирующий набор данных.

В любом случае, косяк на стороне клиентской части.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Окно CPU при запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]