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

    −858

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    FUNCTION get_yesterday
          RETURN DATE
       AS
          dd   VARCHAR2 (2);
          mm   VARCHAR2 (2);
          yy   VARCHAR2 (4);
       BEGIN
          SELECT TO_CHAR (SYSDATE - 1, 'yyyy')
            INTO yy
            FROM DUAL;
       END get_yesterday;

    Вычисляем вчерашнюю дату на PL/SQL

    Запостил: mshogin, 18 Января 2011

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

    • Yesterday, all my troubles seemed so far away
      Now it looks as though they're here to stay
      Oh I believe in yesterday
      Ответить
    • неужели нету встроенной функции?)
      Ответить
      • SYSDATE-1 - это и есть вчера. Вообще, по-моему, FUNCTION без RETURN даже не скомпилируется, не говоря о других нестыковках, так что подозреваю обман!
        Ответить
        • Все прекрасно компилируется.

          function blaaa return varchar2
          as
          begin
          null;
          end;


          также будет компилироваться
          Ответить
      • Решил все-таки проверить.

        Скомпилировалась, но при каждом вызове ошибка:
        PL/SQL: Function returned without value
        * Cause: A call to PL/SQL function completed, but no RETURN statement was executed.
        * Action: Rewrite PL/SQL function, making sure that it always returns a value of a proper type.

        Нерабочий код не является говнокодом!

        Есть и другие нестыковки:
        1) несовпадение типа возвращаемого результата (DATE) с типом единственного значения, возвращаемого запросом (TO_CHAR, очевидно, конвертирует в VARCHAR2);
        2) несовпадение названия функции и ее тела, где получается год вчерашней даты;
        3) наличие лишних локальных переменных.

        Все это наводить на мысль о фейке - въе*ал постеру по минусу.
        Ответить
        • может это вершина айсберга
          а где-то внизу yy конвертят в дату и делают return
          Ответить
        • 1 - ))))
          - return делать необязательно для компиляции пакета
          - в PL/SQL есть механизм приведения типов, так что несовпадение типов varchar2 и date не приводит к ошибке компиляции
          - в данном случае говорить о не совпадении типов вообще не имеет смысла, т.к. нет return

          2) это вы как так определили ? ))
          спецификация пакета полностью совпадет имплементации, в противном случае пакет бы не скомпилировался

          3) да, мы долго смеялись когда ее нашли

          предположения относительно этой фукции таковы, что ее ни разу ни кто не вызвал.
          Наше недоумение насчет нее было вызвано тем фактом, что вчерашнюю дату можно вычислить просто вызвав SYSDATE -1

          Понятия не имею для чего тут минусы и плюсы, так что как вашей душе угодно - минусуйте на здоровье )))
          Ответить
          • Плохо написал, согласен.

            Про компилирование уже поправился выше.
            1) Я имел в виду, что раз уж пишешь функцию, то приведи все данные к нужным типам.
            2) Имел в виду, что возвращает не yesterday, а - после приведения типов - первое января года вчерашней даты (для 01.01.2011 вернет 01.01.2010).

            В общем, слишком упоротый разработчик получается!
            А про минусы - это локальный мем, для красного словца :)
            Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрыто<a href=http://adultdatingbrisbane.com/>Meet Brisbane Mature Singles for Dating
      </a>
      <a href=http://datingice.com/>Romance advice and tips
      </a>
      <a href=http://rhdating.com/>Best Online Dating Sites
      </a>
      <a href=http://sexdatingdelight.com/>Sex Dating Delight
      </a>
      http://adultdatingbrisbane.com/
      http://datingice.com/
      http://rhdating.com/
      http://sexdatingdelight.com/
      Ответить
    • показать все, что скрыто<a href=http://achetercialissansordonnanceenpharmacie.c om/>ou acheter cialis sans ordonnance </a>
      <a href=" http://achetercialissansordonnanceenpharmacie.c om/ ">acheter cialis sans ordonnance a paris </a>
      Ответить
    • показать все, что скрыто<a href=http://achatcialisenfrancelivraisonrapide.com>a cheter cialis 5mg en ligne en france </a>
      <a href=" http://achatcialisenfrancelivraisonrapide.com ">acheter cialis generique en france </a>
      Ответить
    • показать все, что скрыто<a href=http://achetercialis20mgenligne.com/>achat cialis 20mg en ligne </a>
      <a href=" http://achetercialis20mgenligne.com/ ">acheter cialis 20mg original </a>
      Ответить
    • показать все, что скрыто<a href=http://achatcialis5mgenligne.com/>achat cialis 5mg en france </a>
      <a href=" http://achatcialis5mgenligne.com/ ">achat cialis 5mg </a>
      Ответить
    • показать все, что скрыто<a href=http://tadalafil20mgpaschereninde.com/>cialis tadalafil 20mg pas cher </a>
      <a href=" http://tadalafil20mgpaschereninde.com/ ">tadalafil 20mg pas cher en inde </a>
      Ответить
    • показать все, что скрыто<a href=http://achetertadalafil20mgpascher.com/>acheter cialis 20mg en pharmacie </a>
      <a href=" http://achetertadalafil20mgpascher.com/ ">acheter cialis 20mg </a>
      Ответить
    • показать все, что скрыто<a href=http://achattadalafilenfranceenpharmacie.com/>achat cialis en france </a>
      <a href=" http://achattadalafilenfranceenpharmacie.com/ ">achat tadalafil en france en pharmacie </a>
      Ответить
    • показать все, что скрыто<a href=http://acheterprednisone20mgenligne.com/>acheter prednisone 20 mg en ligne </a>
      <a href=" http://acheterprednisone20mgenligne.com/ ">acheter prednisone en ligne </a>
      Ответить
    • показать все, что скрыто<a href=http://achatpropeciaparcartebancaire.com/>achat propecia partnership </a>
      <a href=" http://achatpropeciaparcartebancaire.com/ ">achat propecia par carte bancaire </a>
      Ответить
    • показать все, что скрыто<a href=http://achatamoxicillinebiogaran1g.com/>amoxicilline achat en ligne </a>
      <a href=" http://achatamoxicillinebiogaran1g.com/ ">achat amoxicilline 1g </a>
      Ответить

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