Архив | Рубрика: Базы данных

Oracle Views. Сюрпризы.

Создаем обычную вьюшку. create view TestView as Select Level as N from dual connect by Level < 10 Три следующих запроса работают нормально: Select * from TestView; Select N from TestView; Select n from TestView; Select «N» from TestView; Не понравилось нам название колонки – N, меняем вьюшку create or replace view TestView as Select [...]

Читать полностьюКомментарии отключены

Oracle. Оператор LIKE. Escape character.

LIKE — простой условной оператор для сравнения по маске.  С двумя символами: % — всё что угодно _ — один символ Я всё время считал, что escape character в Oracle это тот же процент (%). До тех пор пока не пришлось искать в строках этот процент и подчеркивание. После первого же запроса понял, что одновременно [...]

Читать полностьюКомментарии отключены

Oracle. OraOleDb, FetchSize и dotnet

Простой запрос, три поля из трех таблиц, все строки VARCHAR2. Dotnet framework 2.0. OleDbDataReader. Первые сто строк вычитываются нормально, потом все идет крокозяблами. Думал поседею. Четыре разных сервера, три девятки, одна десятка, проявляется только на одном. Проблемы оказалась в параметре FetchSize (сколько строк возращать за одну вычитку), первый раз все вычитается правильно, все последующие вернут [...]

Читать полностьюКомментарии отключены

"Горизонтальные" функции в Oracle.

Сегодня обнаружил в коде функцию Coalesce. Ни разу не пользовался. Дословно – объединять. Почему объединять ума не приложу. Функция возвращает первое not null значение из списка, заменитель вложенных NVL функций. И теперь вместо: NVL(NVL(NVL(ColumnA, ColumnB) , ColumnC), ColumnD) можно написать: COALESCE(ColumnA, ColumnB, ColumnC, ColumnD) Функция «горизонтальная». « Горизонтальная» функция, потому что оперирует колонками (или n [...]

Читать полностьюКомментарии отключены

Oracle bad practice — комментарии.

Gojko Adzic составил очень любопытный документ Oracle SQL and PL/SQL Bad Practices. А я позволил себе немного его прокомментировать. Сколько людей — столько мнений. Однозначно разделить на bad и best practice не выйдет.   Using non-deterministic functions directly in conditions. +1 Использование функций в условиях (WHERE) — зло и жестоко бьет по производительности. Catch-all error handling. [...]

Читать полностьюКомментарии отключены

TDD и базы данных

Почему все в качестве примера TTD и баз данных приводят конкатенацию строк в качестве примера? Это самая типичная операция для базы данных? Или просто копировать всегда удобнее? Я пытался найти приятный framework для тестирования года три, если не больше. Вы думаете, я много нашел?   TSQLUnit Пример: CREATE PROCEDURE ut_testCapitalize AS BEGIN DECLARE @outStr VARCHAR(500) [...]

Читать полностьюКомментарии отключены

WHENEVER

Whenever — всякий раз. Не всякий раз, как оказалось. Очень простая задача, ловить все ошибки (что их можно было обрабатывать) в pl/sql скрипте, и потом в bat файле обрабатывать. Пробуем: 1 WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK; 2 3 DECLARE 4 a NUMBER(23,4); 5 BEGIN 6 a := 1/0; 7 END; 8 / 9 EXIT 10 [...]

Читать полностьюКомментарии отключены
Страница 2 из 3123