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

    −48

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    SELECT DISTINCT pr_zak   INTO v_prizn
    FROM ceh_in.book_inp
    WHERE zakaz_wsp = v_zak
    AND uz = v_uz
    AND nws = v_nws
    AND pr_zak = p_pr;

    угадайте, что тут не так?

    Запостил: hovak, 17 Марта 2016

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

    • Будет выбрано не более одной строки с pr_zak = p_pr. И?
      Ответить
      • Обрати внимание, что мы выбираем не всю строку, а только pr_zak и полученное значение помещаем в v_prizn. А если посмотреть на последний AND то можно увидеть, что мы и так знаем, что pr_zak = p_pr. Для чего этот селект мне не понятно
        Ответить
        • Проверить, что в таблице ceh_in.book_inp есть записи, у которых в поле pr_zak присутствует значение p_pr, не? Хотя да, не самый лучший вариант решения.
          Ответить
          • если бы автор пытался проверить наличие записей в таблице, то ниже бы шел обработчик исключений:
            EXCEPTION WHEN NO_DATA_FOUND

            но нет, такого ниже в коде нигде нет.
            Ну и да, если проверять на наличие записей, проще использовать
            SELECT COUNT(*) INTO ...
            Ответить
            • Отсутствие эксепшена плохо вне зависимости от того, что хотел сделать автор кода...
              Ответить
    • а что такое ceh_in? db schema?
      Ответить

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