1. SQL / Говнокод #16675

    −118

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    CREATE FUNCTION get_date RETURN DATE
    IS
    BEGIN
        RETURN SYSDATE;
    END;
    
    DECLARE
        v_date  DATE;
        v_dummy VARCHAR2(2);
    BEGIN
    
    v_date := SYSDATE+4/24/60/60;
    
    SELECT MAX(dummy)
      INTO v_dummy
      FROM dual
    connect BY v_date > get_date;
    
    END;

    "А есть ли какой-то еще способ, когда нет прав на DBMS_LOCK? "

    http://www.sql.ru/forum/1115120/pauza-v-pl-sql-kak

    Запостил: n1919, 10 Сентября 2014

    Комментарии (19) RSS

    • Призываю Капитана для разъяснений.
      Ответить
      • Это говнокод.
        Ответить
      • Ну SLEEP же пытаются навелосипедить на уровне БД.
        Аще жесть какая-то.
        Ответить
    • Рассылать письма из хранимок... Спать в хранимках... Упрлс.
      Ответить
      • самое печальное, что ему там об этом никто сказал
        хуле, в норме вещей
        Ответить
        • норм, у меня как-то из триггеров отсылали udp-пакеты, а листенер по мере возможности их ловил чтобы отслеживать изменения.
          когда 1-2-5-10 записей апдейтится - норм. когда 100тыс - файрвол срабатывает.
          Ответить
          • Просто ад. Не делай так больше. База данных не для этого.
            Если 100к изменений, то их явно должно писать некое приложение. Раз так, то ему не западло кидать эти сообщения в шину/message queue, где все желающие нормально отреагируют. Ынтерпрайзных и не очень шин до жопы, зачем udp из триггера.
            Ответить
            • Ага, и даже если внешнюю шину неудобно юзать (ну, например, не хочется дополнительных коннектов) - в том же постгресе есть встроенный механизм LISTEN/NOTIFY. Он даже с транзакциями нормально работает (notify откладывается до commit'а).
              Ответить
              • странно, что постгресовцы выставляют это как эксклюзив
                в оракле advanced queueing был еще c девятки, а в 12 даже jms из коробки добавили
                но все равно, это дело прикладухи, а не базы
                Ответить
                • > выставляют это как эксклюзив
                  Эм, где? Мне всегда казалось, что эту фичу по образу ораклов и прочих Дорогих и Ынтырпрайзных СУБД и пилили.

                  > это дело прикладухи, а не базы
                  А вот тут я соглашусь: прикладуха может кинуть нормальное уведомление, имеющее прикладной смысл, а триггер - только унылое "запись с номером 5 в таблице users поменялась".
                  Ответить
      • А вдруг на сервере, кроме СУБД, больше никакого софта нет?
        Ответить
        • Пакет dbms_php ещё не предлагали?
          Ответить
        • Ну вот у нас тоже есть server-side скрипты, которые запускаются через СУБД... Так исторически сложилось, ибо отдельных демонов писать или ssh коннект поднимать - куча работы, а тут и коннект уже есть, и учетка в СУБД = учетка в линухе.
          Ответить
          • Как вы админите субд без ссш доступа?
            В том же оракле удобный крон, не спорю, next run datetime можно даже юзер функцией вычислять, но прикрываться отсутствием ssh - бе.
            Ответить
            • Тут соль в том, что в своё время к GUI не хотели прикручивать libssh, http клиента или что-нибудь еще. Вот оно и исполняет скрипты на сервере прямо через СУБД от имени правильного юзера :)
              Ответить
    • А почему не просто циклом? :)
      WHILE get_date < v_date LOOP
      END LOOP
      Ответить
    • Help, I've been informed and I can't become ignnarot.
      Ответить
    • I'll try to put this to good use <a href="http://lcwoygqdhrs.com">imtileamedy.</a>
      Ответить
    • I feel satifsied after reading that one. http://mfonybxlsh.com [url=http://cjhvivy.com]cjhvivy[/url] [link=http://iylczqzopg.com]iylczqzopg[/link]
      Ответить

    Добавить комментарий