Создаю запрос к MS SQL через OLE DB. Обчитался учебника по подготовке к MCITP:DBA и чувствую себя могучим. Отправляю сиквелу скрипт типа:
if (select count(*) from tb_softlist where softname='windows' and softversion='xp' and vendor='microsoft')=0
begin;
insert into tb_softlist(softname,softversion,vendor) values('windows','xp','microsoft');
select scope_identity() as SoftID;
end;
else
select SoftID from tb_softlist where softname='windows' and softversion='xp' and vendor='microsoft';
При этом условие вроде выполняется правильно, выделенные жирным части скрипта отрабатываются, а невыделенные - нет. Ломал голову.
Оказалось, все просто:
Access/JET does not support scripts (more than one statement at a time). SQL
Server does.
You'll need to execute another (separate) query to get the @@Identity.
Вот так. Сиквел поддерживает выполнение составных скриптов, а Access/JET - нет. Хоть выполнение условий поддерживает, и то хорошо.
Источник: http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.adonet/2004-07/1599.html
вторник, 24 февраля 2009 г.
Подписаться на:
Сообщения (Atom)