Скажите пожалуйста, все ли нормально в данной хранимой процедуре.
CREATE Procedure dbo.InsertStory
(
@StoryID varchar(50) ,
@SourceID varchar (10),
@Source varchar (2),
@header text,
@body text,
@Result varchar(20) = null OUTPUT
)
As
declare @decID decimal
insert into Stories (StoryID, SourceID, Source, header,body)
values (@StoryID, @SourceID, @Source, @header,@body)
select @decID = @@IDENTITY
select @Result = convert(varchar(20),@decID)
return (1)
GO
Запись вставляется нормально, но возвращается неправильное значение IDENTITY, никак не возвращается правильное:( Работаю с базой через DB Library for C.
хранимая процедура
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: хранимая процедура
shadow7256 wrote:Скажите пожалуйста, все ли нормально в данной хранимой процедуре.
Вряд-ли ЭТО проблема. Но Just in case
всегда используйте SCOPE_IDENTITY
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
-
- Уже с Приветом
- Posts: 1407
- Joined: 07 Jan 2003 19:51
- Location: НорКа
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: хранимая процедура
katit wrote:shadow7256 wrote:Скажите пожалуйста, все ли нормально в данной хранимой процедуре.
Вряд-ли ЭТО проблема. Но Just in case
всегда используйте SCOPE_IDENTITY
Хм, поменял на SCOPE и заработало Странно.. раньше работало и с IDENTITY но вдруг ни с того ни с сего перестало.
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Слiн wrote:А триггера на stories нету какого-нибудь, который еще куда-нибудь что-нибудь вставляет?
есть наверное. Дело в том, что я проинсталлировал софт от компании IMP, ихний софт заменяет сиквельный full text search и работает быстрее намного. Так судя по документации, эта софтина устанавливает тригера на вставку записей, обновление и удаление, чтобы своевременно обновлять индекс.
Вы думаете это причина? А почему тогда работает со SCOPE?
-
- Уже с Приветом
- Posts: 1407
- Joined: 07 Jan 2003 19:51
- Location: НорКа
Re: хранимая процедура
shadow7256 wrote:Хм, поменял на SCOPE и заработало Странно.. раньше работало и с IDENTITY но вдруг ни с того ни с сего перестало.
Кто-то небось триггер добавил тайком.
Найти и наказать негодяя!
-
- Уже с Приветом
- Posts: 1407
- Joined: 07 Jan 2003 19:51
- Location: НорКа
shadow7256 wrote:
Вы думаете это причина? А почему тогда работает со SCOPE?
http://msdn.microsoft.com/library/defau ... s_6n8p.asp
For example, you have two tables, T1 and T2, and an INSERT trigger defined on T1. When a row is inserted to T1, the trigger fires and inserts a row in T2. This scenario illustrates two scopes: the insert on T1, and the insert on T2 as a result of the trigger.
Assuming that both T1 and T2 have IDENTITY columns, @@IDENTITY and SCOPE_IDENTITY will return different values at the end of an INSERT statement on T1.
@@IDENTITY will return the last IDENTITY column value inserted across any scope in the current session, which is the value inserted in T2.
SCOPE_IDENTITY() will return the IDENTITY value inserted in T1, which was the last INSERT that occurred in the same scope. The SCOPE_IDENTITY() function will return the NULL value if the function is invoked before any insert statements into an identity column occur in the scope.
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL