У меня есть много таблиц с той же общей схеме (что-то) ID TINYINT, (то) Название VARCHAR (50), как это:Getting Возвращаемое значение из динамического SQL Upsert хранимой процедуры
PhoneType
---------------------------
PhoneTypeID | PhoneTypeName
---------------------------
1 | Cell Phone
2 | Landline
Я ве написал динамический SQL скрипт, который может сделать upserts на этих таблицах, учитывая ID (обновление, если не 0, вставить в противном случае), значение имени, и имя таблицы:
ALTER PROCEDURE [dbo].[UpsertListItemValue]
@ItemID varchar(4),
@ItemName varchar(50),
@TableName varchar(50)
AS
DECLARE @sql nvarchar(500)
SET @sql = 'IF ' + @ItemID + ' <> 0
BEGIN
UPDATE ' + @TableName + '
SET ' + @TableName + 'Name = ''' + @ItemName + '''
WHERE ' + @TableName + 'ID = ' + @ItemID + '
END
ELSE
BEGIN
INSERT INTO ' + @TableName + '
(' + @TableName + 'Name)
VALUES
(''' + @ItemName + ''')
END'
EXECUTE (@sql)
GO
Я хотел бы иметь идентификатор элемент, который был вставлен/обновлен, и используйте это как возвращаемое значение для моей хранимой процедуры. Как мне это сделать?
Например, если я
EXEC UpsertListItemValue 1, 'Celluar Phone', PhoneType
Я хотел бы получить 1
назад (после обновления), и если я
EXEC UpsertListItemValue 0, 'Work Phone', PhoneType
Я хотел бы получить 3
назад (после вставки).
Именно то, что я искал. Благодаря! –