Текущий архив: 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.049 c