Страницы

Показаны сообщения с ярлыком Базы данных. Показать все сообщения
Показаны сообщения с ярлыком Базы данных. Показать все сообщения

24 января 2014 г.

MS SQL Server. Varbinary в динамическом SQL

Тип varbinary не вариант передать как простой тип, его надо преобразовывать специальной функцией.

Собираем динамический запрос:

9 октября 2012 г.

ZeosLib. Транзакции. Ошибка: invalid operation in non AutoCommit mode

Еще раз Здравствуйте.
       Наткнулся на ошибку "invalid operation in non AutoCommit mode" при выполнении ZConnection.StartTransaction.
       В zeos-компонентах управление транзакциями производится из объекта класса TZConnection. В этом классе есть свойство AutoCommit:boolean, а так же методы StartTransaction, Commit, Rollback.
       Я думал, что когда используется StartTransaction..Commit/Rollback, AutoCommit должен быть FALSE. Ибо если логически подумать, то зачем нам автоматический коммит, если мы управляем транзакциями вручную.
Оказывается немного не так... StartTransaction НЕ будет работать если AutoCommit = false.
       Если AutoCommit = true, тогда транзакции фиксируются после каждого корректно завершенного SQL-оператора, а StartTransaction позволяет отменить автоматическое фиксирование и управлять транзакцией вручную. При AutoCommit = false - изменения не будут фиксироваться в базу вообще, следовательно команду StartTransaction вызывать бесполезно.

p.s.
Код метода который генерирует указанное в сабже исключение:
procedure TZConnection.CheckAutoCommitMode;
begin
  if not FAutoCommit and (FExplicitTransactionCounter = 0) then
    raise EZDatabaseError.Create(SInvalidOpInNonAutoCommit);
end;

2 октября 2012 г.

pgAdmin. Резервное копирование и восстановление базы данных.

Доброго времени суток.
       Нашел на компе старое описание пошаговых действий при резервном копировании и восстановлении базы данных. Для чего делал и для кого делал - не помню, но не пропадать же добру, залью сюда. Может кому-то в чем-то пригодится :).

1 октября 2012 г.

Delphi XE2. Установка ZeosLib.

Приветствую Вас в своем блоге.

Сегодня я хотел бы описать процесс установки компонентов Zeos на Delphi XE2.

        Первое, что необходимо это конечно сами компоненты. Когда-то я качал их из официального SVN-а. Архив с тех пор сохранился, его можно взять ТУТ, если по каким-либо причинам Вы не можете скачать с SVN.
        Итак, компоненты загружены, сложены в отдельную папку, идем далее...
Выбираем "File - Open Project..."
 

27 сентября 2012 г.

pgScript. Работа с датами (представление значений в скрипте).

Доброго времени суток.

       pgScript во время выполнения подствляет вместо именованных переменных их значения, причем просто заметой имени на значения прямо в текста скрипта. Может быть для скриптовых языков (в общем случае) это не новость, но я столкнулся с этим впервые.
       На кануне мне довелось написать скрипток который выполняет запрос с фильтрацией по дате. Дата для фильтрации выбиралась в переменную скрипта, а позже использовалась в запросе.

Скрипт:
declare @SesRec,
 @i,
 @date_session;

begin
 set @SesRec = select to_char(session_begin, 'YYYY-MM-DD') from session order by session_begin;

 set @i = 0;
 while @SesRec[@i][0]
 begin
  set @date_session = @SesRec[@i][0];
  print @date_session;
  update "session" set
   id_session = @i
  where session_begin::date = '@date_session'::date;
   set @i = @i+1;
 end
end


Обратите внимание на запрос, а именно на способ подстановки переменной "@data_session":
update "session" set
 id_session = @i
where session_begin::date = '@date_session'::date;

pgScript интерпретировал такой запрос так:
[QUERY    ] 
update "session" set
 id_session = 0
where session_begin::date = '1900-01-01'::date
и выполнил его корректно!
Записи типа:
update "session" set
 id_session = @i
where session_begin::date = @date_session::date;
--**********************************************
update "session" set
 id_session = @i
where session_begin::date = ''||@date_session||''::date;
--**********************************************
update "session" set
 id_session = @i
where session_begin::date = quote_literal(@date_session)::date;

Работать не будут!

6 сентября 2012 г.

Базы данных. Видео лекции

Решил просмотреть курс лекций по Базам Данных. Лектор - И.Тетерин.
Просмотрев первую лекцию (первые ~40 мин. видео, все остальное - "шум") принял решение продолжать просмотр и поделиться метериалами.
Все остальное по ссылке ниже ролика.


Посмотреть видео на сайте Лекториума