Использование объявленной переменной в другом SQL-запросе - PullRequest
0 голосов
/ 23 октября 2018

Я хочу использовать идентификатор моего запроса вставки в другом запросе, объявив переменную, как показано ниже.Однако второй запрос не видит объявленную переменную.Как я могу использовать свой идентификатор первой вставки во втором запросе вставки

DECLARE @myVariable table (PKProductVariantId INT)
INSERT INTO STProductVariant
(FKProductId,FKProductDetailValueId_,ProductVariantCode,IsActive,StockQuantity)
OUTPUT inserted.PKProductVariantId into @myVariable
values(1,1,'test',1,1) 

Затем

insert into STBranchProductVariantRelation(FKProductVariant,FKBranch,IsActive)
values (@myVariable,1,1)

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Вам нужно использовать insert . . . select:

insert into STBranchProductVariantRelation(FKProductVariant, FKBranch, IsActive)
    select t.PKProductVariantId, 1, 1
    from @myVariable t; 

Я думаю, что вы вводите себя в заблуждение, называя table variable переменной "variable".Затем вы думаете, что это скалярная переменная.

Я написал бы этот код как:

DECLARE @ids table (PKProductVariantId INT);

INSERT INTO STProductVariant
(FKProductId, FKProductDetailValueId_, ProductVariantCode, IsActive, StockQuantity)
    OUTPUT inserted.PKProductVariantId into @ids
    VALUES(1, 1, 'test', 1, 1); 

    insert into STBranchProductVariantRelation(FKProductVariant, FKBranch, IsActive)
        select i.PKProductVariantId, 1, 1
        from @ids i; 
0 голосов
/ 23 октября 2018

Вы хотите использовать ПК из вставленной строки в STProductVariant?Попробуйте это:

INSERT INTO STProductVariant (...) VALUES (...);
SET @lastId := LAST_INSERT_ID();
INSERT INTO STBranchProductVariantRelation (FKProductVariant, FKBranch, IsActive)
VALUES (@lastId, 1, 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...