Я хотел бы создать функцию, которая вставляет запись и возвращает ее первичный ключ, чтобы я мог передать эту функцию в качестве параметра другого запроса. Например, я попытался это:Функция SQL для возврата значения, содержащего INSERT
CREATE FUNCTION CreateEntity
(
@entityTypeId int,
@siteId int
)
RETURNS bigint
AS
BEGIN
DECLARE @entityId bigint;
INSERT INTO [ObjectSystem].[Entities] ([EntityTypeId], [SiteId], [Deleted])
VALUES (@entityTypeId, @siteId, 0);
SELECT @entityId = SCOPE_IDENTITY();
RETURN @entityId;
END
GO
но MSSMS выдвигает на первый план запроса INSERT и говорит «Invalid использование бокового осуществления оператора„Insert“в пределах функции.»
Я хотел бы иметь возможность использовать такую функцию, как так:
INSERT INTO OtherTable (EntityId, Name, Description) VALUES
(CreateEntity(), 'Test', 'This is a test item.'),
(CreateEntity(), 'Test', 'This is a test item.'),
(CreateEntity(), 'Test', 'This is a test item.'),
(CreateEntity(), 'Test', 'This is a test item.'),
(CreateEntity(), 'Test', 'This is a test item.'),
(CreateEntity(), 'Test', 'This is a test item.');
Как я могу достичь желаемого эффекта, если вообще? Если это невозможно, что я могу сделать, это похоже?