Публікації

Показано дописи з травень, 2011

Найти ошибку

Только что коллега обратился с вопросом: почему один и тот же запрос возвращает разные результаты в зависимости от того, вызван он прямо или "упакован" в функцию. Я потратил минут 20 на анализ простого кода, но так ничего и не нашел. Запрос отдельно: select max ( LENGTH ) from TUBES where TUBES.NAME LIKE 'tube1' Функция: create or replace FUNCTION "GET_TUBE_LENGTH" ( NAME IN VARCHAR ) RETURN NUMBER AS depth NUMBER ; BEGIN select max ( LENGTH ) into depth from TUBES where TUBES.NAME LIKE NAME; RETURN depth ; END GET_TUBE_LENGTH; Если выполнить запрос отдельно, получаем NULL Если вызвать функцию: SELECT GET_TUBE_LENGTH ( 'tube1' ) FROM DUAL ; получаем 1000! Еще через 10 минут, он написал мне что решил проблему: Название параметра функции совпадает с именем поля в таблице TUBES и оператор like сравнивает не со значением параметра, а с значением поля.

Обновление сервиса "Формы и Бланки"

После долгого перерыва мы, наконец-то, выложили новую версию сервиса " Формы и бланки ". Что мы сделали: Опубликовали новые реквизиты для уплаты штрафов ГАИ и для перечислений в пенсионный фонд Исправили ошибки, которые периодически возникали при генерации документов Ускорили выполнение части запросов Подготовили систему к появлению нескольких интересных функций. Так о чем я... О том, что все самое интересное - впереди.