Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не работает процедура или глюк bde  [new]
Одминчег_07
Guest
Очень странная ситуация:

Есть программа написанная на дельфи работает через бде. конвертит и сливает данные из дбф-файла на sql server. Идет вызов процедуры Update_data через компоненту TStoredProc. Все вроде бы нормально работает, и профайлер показывает:
RPC: Completed exec dbo.Update_data;1 @CODE='...',@NAME='blablalba'
А на самом деле данные на серваке не обновляются.
Пробовал тем же юзером под которым работает эта прога запускать на выполнение этот запрос из студии, данные нормально обновляются.
А если использовать компоненту TQuery вместо TStoredProc и когда профайлер выводит:
SQL: BatchStarting... и Completed...
то все нормально обновляется.

Вот незнаю в чем проблем в дельфи или в sql server'е.
Select @@version:
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Developer Edition on Windows NT 6.0 <X86> (Build 6001: Service Pack 1)
24 ноя 09, 15:29    [7971284]     Ответить | Цитировать Сообщить модератору
 Re: Не работает процедура или глюк bde  [new]
Glory
Member

Откуда:
Сообщений: 104760
Транзакцию открываете, но не подтверждаете, вот и кажется, что данные не обновляются
24 ноя 09, 15:32    [7971309]     Ответить | Цитировать Сообщить модератору
 Re: Не работает процедура или глюк bde  [new]
Одминчег_07
Guest
хмм...если вы имеете ввиду записи begin и commit tran то в самой процедуре их нету.

вот тело процедуры:

Create PROCEDURE [dbo].[Update_data] 

@CODE int,
@NAME char(60)

AS
DECLARE
@gCount integer

SELECT @gCount=COUNT(*) FROM dbo.MyTable WHERE (CODE=@CODE)

IF @gCount >0  and @gCount < 2
BEGIN

UPDATE dbo.MyTable
 SET    NAME=@NAME
 WHERE  (CODE=@CODE)
END
ELSE
IF @gCount >=2
BEGIN

UPDATE dbo.MyTable
 SET    NAME=@NAME 
 WHERE  CODE=@CODE and ID=(select max(ID) from dbo.MyTable where CODE=@CODE)
END

ELSE
IF @gCount <1
BEGIN
       INSERT INTO dbo.MyTable (CODE, NAME) 
       VALUES (@CODE,@NAME)
END
24 ноя 09, 15:39    [7971404]     Ответить | Цитировать Сообщить модератору
 Re: Не работает процедура или глюк bde  [new]
Glory
Member

Откуда:
Сообщений: 104760
Одминчег_07
хмм...если вы имеете ввиду записи begin и commit tran то в самой процедуре их нету.

Если бы эти команды были в процедуре, то все было бы прозрачно
А вот когда транзакциями начинает рулить клиент, то все наоборот становится туманным
24 ноя 09, 15:42    [7971433]     Ответить | Цитировать Сообщить модератору
 Re: Не работает процедура или глюк bde  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Я бы начал с добавления SET NOCOUNT ON в хп.
24 ноя 09, 15:55    [7971573]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить