Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оцените процедуру
|
|||
|---|---|---|---|
|
#18+
database rt_data; drop procedure get_lost_u(char, date); create function get_lost_u(u_num_cnt char(20), u_dat_uchet date) returning float; DEFINE u_volumeN float; DEFINE u_volumeB float; define u_tempn, u_tempb, u_daten, u_dateb integer; let u_volumeN=0; let u_volumeB=0; let u_dateN=0; let u_dateB=0; --- выборка последней записи foreach select first 1 dat_uchet, val_cnt into u_dateN, u_volumeN from counters where is_actual=1 and num_cnt=u_num_cnt and dat_uchet>=u_dat_uchet order by dat_uchet desc EXIT FOREACH; END FOREACH; --- выборка предпоследней записи foreach select first 1 dat_uchet, val_cnt into u_dateB, u_volumeB from counters where is_actual=1 and num_cnt=u_num_cnt and dat_uchet<u_dat_uchet order by dat_uchet desc EXIT FOREACH; END FOREACH; --- подсчет расхода за месяц IF (u_volumeN-u_volumeB)<=0 THEN let u_volumeN=0; ELSE --- если разница больше года if (year(u_daten)-year(u_dateb))>0 then let u_volumeN=(u_volumeN-u_volumeB)/((year(u_daten)-year(u_dateb))*12+month(u_daten)-month(u_dateb)); else --- если в диапазоне одного года let u_volumeN=(u_volumeN-u_volumeB)/(month(u_daten)-month(u_dateb)); end if; end if; return u_volumeN; end function; ---grant execute on get_lost_u to "public" as "are"; --- select 1, get_lost_u("29","01.05.2004") from systables where tabid=1; Есть таблица, содержащая показания водомеров, необходимо просчитать расход воды по одной квартире за определенный месяц... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2004, 15:47 |
|
||
|
Оцените процедуру
|
|||
|---|---|---|---|
|
#18+
Ну, ничего страшного, первый блин... с кем не бывает. Запускать, как я понимаю, не пробовали? BTW, под какую версию информикса шедевр ваяете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2004, 16:02 |
|
||
|
Оцените процедуру
|
|||
|---|---|---|---|
|
#18+
Первый блин.... согласен.... предложите свои варианты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2004, 17:15 |
|
||
|
Оцените процедуру
|
|||
|---|---|---|---|
|
#18+
sergiigrayПервый блин.... согласен.... предложите свои варианты... Мои предложения: 1) Прочитать что-нибудь про SPL 2) Самостоятельно добиться выполнения create procedure - исправить ошибки и очепятки 3) Ответить на заданные вам вопросы. 4) В результате ## 1,..,3 : переформулировать заданный вопрос. IMHO, он должен начинаться с "как" или c "почему". With best regards, Enlighten me. PS. Whole things written above, are non-offensive and shold be treated as "IMHO" ideas... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 11:07 |
|
||
|
Оцените процедуру
|
|||
|---|---|---|---|
|
#18+
ваяю под 9.21 ТС1 Запускается и работает... но долго. как можно оптимизировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 17:23 |
|
||
|
Оцените процедуру
|
|||
|---|---|---|---|
|
#18+
На первый взгляд - foreach здесь излишен. Зачем создавать курсор ради запроса ОДНОЙ записи? Select ... into ... будет в самый раз. ИМНО, тормозить такая процедура может только на селектах. Посмотрите на план их выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 17:37 |
|
||
|
Оцените процедуру
|
|||
|---|---|---|---|
|
#18+
выдает не обязательно одну строку. Бывает, что в квартире по 4 счетчика.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 18:15 |
|
||
|
Оцените процедуру
|
|||
|---|---|---|---|
|
#18+
sergiigrayвыдает не обязательно одну строку. Бывает, что в квартире по 4 счетчика.... Переформулируйте селекты. Хотя ожидать резкого ускорения я бы от этого не стал, читаемость не ухудшидся. Дальше профайлинг и тюнинг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 18:31 |
|
||
|
Оцените процедуру
|
|||
|---|---|---|---|
|
#18+
Enlighten me Переформулируйте селекты. Хотя ожидать резкого ускорения я бы от этого не стал, читаемость не ухудшидся. Дальше профайлинг и тюнинг. как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 11:26 |
|
||
|
Оцените процедуру
|
|||
|---|---|---|---|
|
#18+
sergiigrayкак? И без использования Data Mining ясно, что этот топик вы проверяете исключительно по пятницам... Informix SPL хорош под пиво? :-)) Я не знаю структуры ваших таблиц, посему приведу абстрактный пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Хранимую процедуру подобный селект не украсит, но всё лучше (как мне кажется) чем fake foreach. Профайлинг. SET DEBUG FILE TO '/tmp/foo.trace'; --из доки TRACE OFF; Trace 'before...'||curtyme ; .... Trace 'after...'||curtyme ; Вот здесь сказано как получить текущий момент во время выполнения хранимой процедуры. CURRENT будет одинаков во время всего выполнения. Тюнинг - set explain on и select'ы ручками, подставляя значения... Может кто предложит что получше, но я бы двигался примерно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 17:27 |
|
||
|
|

start [/forum/topic.php?fid=44&tid=1609161]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 348ms |

| 0 / 0 |
