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

    −127

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    ALTER PROCEDURE [dbo].[GetVersion]
      @Version varchar(20) OUTPUT
    AS
    begin
      select @Version='1.7.1.5847'
    end

    Забавная ХП.

    Запостил: Probity, 28 Мая 2012

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

    • А мне нравится, не знаю почему, но нравится.
      А можно еще создать табличку с версиями и туда вставлять новые записи. Все-равно у базы нет версии билда.
      *косится с презрением на код* но тут похоже кто-то хранит версию клиента, работающего с БД.
      Ответить
      • Все бы, может быть, и ничего, но есть много "но".
        Чтобы получить результат от такой ХП нужно:
        1. Объявить @Version;
        2. Выполнить ХП;
        3. @Version=@Version OUTPUT;
        4. SELECT @Version.
        Казалось бы, ну ладно, что там, подумаешь, пара лишних строчек. Но выполнить такую ХП именно, как ХП, из, к примеру, приложения .NET невозможно.

        Если бы ХП имела более простой вид, например:
        create proc [dbo].[MBGetVersionTrue]
        as 
        begin
          select '5.18.1.1100'
        end

        этих танцев с бубном бы не было.
        Ответить
        • > Но выполнить такую ХП именно, как ХП, из, к примеру, приложения .NET невозможно.
          Что-то мне кажется это сомнительным, извините, разбираться сейчас времени нет. На предыдущем проекте ASP.NET сайт вполне комфортно работал с output параметрами ХП. Может местные .NET-разработчики подскажут, что Вы или я делаем не так.
          Ответить
        • --Но выполнить такую ХП именно, как ХП, из, к примеру, приложения .NET невозможно

          абсолютно правильный и корректный код

          если у кого-то кривые руки и он не умеет пользоваться процедурами с возврашаемыми параметрами то флаг ему в руки

          в данном случае SELECT играет роль оператора SET - афтар учи TSQL
          Ответить
          • SQL я знаю. И я знаю, что код работает. Вопрос такой - зачем здесь нужен output-параметр здесь вообще? Раз Вы такой умный и руки у Вас не кривые - объясните популярно, пожалуйста.
            Ответить
            • [KO]
              Потому что эту процедуру может использовать другая.
              А из другой процедуры ResultSet не получишь.
              [/KO]
              Ответить
              • В том-то и дело, что не использует эту ХП никакая другая ХП.
                Ответить
    • фееричный идиотизм.
      во вторую таблицу всенепременно нужно выложить html страницу с внедренными js и css, а также вставками пыхокода, которым посредством echo выведетмя jquery код, который ajax'ом возьмет из этой таблицы версию и выведет ее alert'ом.
      Ответить

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