"Программист — это профессиональный конвертер галлюцинаций заказчика в жесткую формальную систему"
Jul 102014
 

Полдня не могли понять, почему не работает кусок кода на стыке двух проектов?! Все переменные через dbms_output выглядят красиво, но ничего не работает…

Сомнения закрались, когда в запросе вместо параметров подставили значения… Все заработало! Все оказалось просто – Oracle хранит дату всегда со временем, даже после trunc там останется 00:00:00. Выяснилось, что приложение присылало дату +1 час (кто-то поясное время использовал).

Сделал для себя вывод – если в тестовом выводе участвует дата, то конвертация к строке только явная, с указанием времени в формате.

DBMS_OUTPUT.PUT_LINE(to_char(DT,'DD-MON-YYYY hh24:mi:ss'));
 Posted by at 8:32 pm
Aug 292013
 

Запрос работает медленно? Ну что ж, его надо оптимизировать, и первое, на что мы будем смотреть – план его выполнения.
В этом посте расскажу как посмотреть план, если недоступны всякие GUI тулзы вроде TOAD и SQLNavigator.
Тут рассмотрим два способа:

  1. Скрипты utlxpls.sql | utlxplp.sql
  2. Пакет DBMS_XPLAN

Continue reading »

 Posted by at 1:54 pm
May 242013
 

Вроде и нужно часто, а команда забывается:

alter session set current_schema=SCHEMA_NAME;

Если часто приходится работать под другим ползователем в БД, то включить эту команду в скрипт будет хорошей идеей.

Кстати, если вдруг придется использовать эту команду в PL/SQL, подставить туда bind variable не удасться – придется генерить строку команды и выполнять ее через

execute immediate ALTER_SQL_STATEMENT;
 Posted by at 9:33 am