Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.15;
Скачать: CL | DM;

Вниз

Получение и вставка автоинкремента в той же процедуре   Найти похожие ветки 

 
Ёжик   (2007-01-27 15:40) [0]

Здаров

Есть ХП
CREATE PROCEDURE dbo.SETNAMES
@parent_ID int,
@Name varchar (20),
@Table smallint,
@CID int OUTPUT

AS
BEGIN
DECLARE @N varchar (20)
DECLARE @I int

SELECT @I = C.ID, @N = C.Name FROM Catalog C WHERE C.Object_type = @Table
AND C.Name = @Name;
IF (@N = @Name)
  SET @CID = @I;  -- <---- 1

ELSE
 BEGIN
  BEGIN TRANSACTION;
  INSERT INTO Catalog (Name, Object_type) VALUES ( @NAME, @Table);
  COMMIT TRANSACTION;

  SELECT @@IDENTITY as [@CID]; -- <---- 2
 END
INSERT TREE (Sys_ID, SysParent_ID) VALUES (@CID, @parent_ID);
END
GO


Запрос
declare @ID int
execute dbo.setnames 0, "Проверка", 1, @ID output
Select "ID" = @ID


Если по условию попадаем в строку 1, то возвращается результат - значение "ID". Ежели попадаем в строку 2, то возвращается значение @CID и ошибка - "Не удалось вставить значение null в столбец Sys_ID таблицы Tree." Почему так? Ведь возвращается @CID не null?


 
stone   (2007-01-27 18:43) [1]

я не очень понял значение этой строки

>   SELECT @@IDENTITY as [@CID]; -- <---- 2

в данном контексте
вероятно здесь было бы правильнее
SET @CID = @@IDENTITY


 
Ёжик   (2007-01-27 20:23) [2]

Да, спасибо, догнал %)



Страницы: 1 вся ветка

Текущий архив: 2007.04.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.047 c
15-1174303971
Jolik
2007-03-19 14:32
2007.04.15
Вопрос по BDS2006...


1-1171952883
Ega23
2007-02-20 09:28
2007.04.15
Вот такая ошибка начала вываливаться при переходе


5-1151158278
PRT
2006-06-24 18:11
2007.04.15
DelhiX в Delphi 7


2-1174726432
Minutka
2007-03-24 11:53
2007.04.15
Спасите-помогите!!!!!


2-1174562221
tery
2007-03-22 14:17
2007.04.15
Удаления записи в столбце