Конференция "Базы" » можно ли сделать delay в ХП IB7.5? [IB7.5]
 
  • Johnmen © (11.02.09 12:43) [20]
    t=current_timestamp+<здесь желаемое время задержки в сутках>;
    while current_timestamp<t do;

  • July (11.02.09 12:46) [21]

    > Сергей М. ©   (11.02.09 12:26) [17]

    Может быть когда-нибудь на бу-у-удущее, да :)
    Пока эта система на клиент-сервере, сделана достаточно давно, серьезные архитектурные переделки на горизонте ей пока не светят, есть более актуальные разработки, так что пока вот так..
    Но проблема, из-за которой этот вопрос возник, к счастью, достаточно редкая, для нее хватило бы и скромной заплатки..
  • Кщд (11.02.09 12:51) [22]
    >серьезные архитектурные переделки на горизонте ей пока не светят
    прошу прощения за оффтоп, но, судя по Вашему описанию этой системы, ей светит архитектурная смерть)
  • Сергей М. © (11.02.09 12:58) [23]

    > July   (11.02.09 12:46) [21]


    А задействование UDF тоже относится к "серьезные архитектурные переделки" ?
  • July (11.02.09 13:06) [24]

    > Johnmen ©   (11.02.09 12:29) [18]
    А что, значение этого флага однозначно говорит, выполняется или нет? И кто выставляет этот флаг?


    Ну, он появится только если я действительно оставлю этот способ работы :)
    Тогда он бы и выставлялся, после проверки, если уже не занят (именно в нужной записи), запускалась нужная обработка (зависящая именно от этой записи), после снимался бы.
    Надеюсь все-таки обойтись без изобретения велосипедов..


    > Johnmen ©   (11.02.09 12:43) [20]
    > t=current_timestamp+<здесь желаемое время задержки в сутках>;
    >
    > while current_timestamp<t do;


    вот если <желаемое время задержки в сутках> те 10 сек, как это указать?

    вычитала в примере из http://plagiata.net.ru/?p=411
    Как отнимать или добавлять части суток к переменной типа Timestamp?
    Нужно просто прибавить или отнять от переменной типа Timestamp количество секунд. Этот пример показывает, какая будет дата и время через 2 часа.
    select current_timestamp + (2.0 / 24.0) from rdb$database


    ..и что-то я все таки туплю :)
    тогда для моих 10 сек. надо вместо делить на 24 вместо 2-х -
    (1:60):6=0,0028 ?

    или если в формате timestamp - что тогда писать в качестве дня-месяца-года?

    спасибо за советы!
  • Кщд (11.02.09 13:17) [25]
    >тогда для моих 10 сек. надо вместо делить на 24 вместо 2-х - (1:60):6=0,0028 ?

    10/24/60/60
  • July (11.02.09 13:22) [26]

    > А задействование UDF тоже относится к "серьезные архитектурные
    > переделки" ?


    Ну, думаю что нет :)
    А то, что вы предлагали в [17] можно сделать с помощью UDF?
    Боюсь, что самостоятельно такое не осилю..
  • Сергей М. © (11.02.09 13:38) [27]

    > то, что вы предлагали в [17] можно сделать с помощью UDF?


    Ну уж если извращаться, то почему бы и нет ?


    > Боюсь, что самостоятельно такое не осилю


    А мы тут все зачем торчим денно и нощно ?
    Не можешь - поможем, не хочешь - заставим)
  • July (11.02.09 15:28) [28]

    > Сергей М. ©   (11.02.09 13:38) [27]


    Ну, разве что delay этот вынести в UDF?  :)

    Видимо придется попробовать, потому что калькуляции с timestamp что-то не помогают.
    Кщд, спасибо, делала такой цикл, под отладкой вижу, что все нормально, у переменной время на 10 сек больше текущего, но при запуске все повисает намертво, будто процедура никогда не дожидается этого момента. Хотя под отладкой (IBExpert) наоборот - поведение, как будто условие сразу выполнилось.
  • Сергей М. © (11.02.09 15:32) [29]

    > Ну, разве что delay этот вынести в UDF?


    Для настоящего извращения delay слишком примитивен)
  • MsGuns © (11.02.09 16:45) [30]
    Преклоняю коленки перед мастерами, чего-то отвечающими по сабжу, из которого абсолютно неясно, ЗАЧЕМ делается какая-то задержка перед извлечением данных с сервера, да к тому же средствами самого сервера :) ИМХО, автор потеряла лез даже не за тремя соснами, а перед единственным пеньком.
    А объяснить СУТЬ ЗАДАЧИ, очевидно, секьюрити не позволяет :)
  • Petr V. Abramov © (11.02.09 17:32) [31]

    > July   (11.02.09 11:29) [2]
    >
    > > Каких ?
    >
    > Просто запросом читаю поле из обычной таблицы, если оно
    > <>0, надо подождать, иначе - все ОК и поехали дальше

    если оно  <>0,это значит, что оно либо 0<>, либо другая транзакция его уже в ноль поставила, но еще не закоммитилась, и когда ты начнешь чего-нить делать, оно давно будет 0=.
    Так что брось свою затею
  • July (12.02.09 10:38) [32]

    > Petr V. Abramov ©   (11.02.09 17:32) [31]

    Точно!  да,  "слона-то я и не заметил" :)
    бросаю..
  • Виталий Панасенко (12.02.09 11:03) [33]
    а это не поможет?
    http://ibase.ru/devinfo/ibtrans.htm
  • July (12.02.09 11:09) [34]
    Спасибо, это вообще очень помогает :)
  • Виталий Панасенко (12.02.09 11:15) [35]

    > SNAPSHOT TABLE STABILITY (константа consistency) - изолированность
    > образа (воспроизводимое чтение), при обращении к таблицам
    > блокирует к ним доступ (как минимум на изменения, целиком
    > для всей таблицы, см. дальше резервирование таблиц).
    >


    по-моему, где-то рядом
  • July (12.02.09 12:44) [36]

    > Виталий Панасенко   (12.02.09 11:15) [35]


    манипулирование уровнями мне не подходит


    > Сергей М.


    Спасибо еще раз за статью, кажется в моем случае подойдет идея "глотания бильярдного шара с холостыми update-ами" :)

    Всех благодарю за внимание!
 
Конференция "Базы" » можно ли сделать delay в ХП IB7.5? [IB7.5]
Есть новые Нет новых   [134477   +40][b:0][p:0.001]