如何在两个 Insert 语句的查询中 return ScopeIdentity

How can I return ScopeIdentity in a query of two Insert statements

这里我将值插入两列,但现在我想同时声明刚刚创建的值:

Declare @ClientCompanyId int, @PersonId int

INSERT INTO ClientCompany (CompanyName) 
VALUES ('WebDunia')

SELECT @ClientCompanyId = SCOPE_IDENTITY() 

INSERT INTO Person (ClientCompanyId, Company, AddressLine1, AddressLine2, City, State, Country, Zip, HomePhone, WorkPhone, CellPhone, Fax, EmailId, Website)
VALUES (@ClientCompanyId, 'Google', 'Chicago', 'USA', 'Norway', 'ALASKA', 'CANADA', '12345', 12345678912, 12345, 56454, 'Fax', 'Email', 'Website')
SELECT SCOPE_IDENTITY() AS PersonId

我同时想要 PersonIdClientCompanyId

为什么不在第二次插入后用@PersonID 复制你对 @ClientCompanyID 所做的事情?

SELECT SCOPE_IDENTITY() as PersonId 行应显示为 SELECT @PersonID = SCOPE_IDENTITY() 然后两个变量都将设置值。

我不知道这个 sql 在哪个上下文中运行,但是如果你需要两个值,你可以 select 它们 - 或者在存储过程的情况下将它们作为输出参数。

使用另一个变量集,与 @ClientCompanyId

相同
Declare @ClientCompanyId int,
        @PersonId int
 INSERT INTO ClientCompany(CompanyName) VALUES     ('Google')
 SELECT @ClientCompanyId=SCOPE_IDENTITY() 

Insert into Person (ClientCompanyId,Company,AddressLine1, AddressLine2, 
                    City, State, Country, Zip, HomePhone, WorkPhone, 
                    CellPhone, Fax, EmailId, Website)                                  
Values(@ClientCompanyId,'Google','Chicago','USA','Norway',             
      'ALASKA','CANADA','12345',12345678912,12345,56454,'Fax',
       'Email','Website')

SELECT @ClientCompanyId, @PersonId=SCOPE_IDENTITY()     <<<<<<<<<<<<<<<<<**Here**

试试这个:

INSERT INTO ClientCompany (CompanyName)
OUTPUT Inserted.ID
VALUES ('Google'), ('Microsoft')

它将return列出所有插入的 ID,我假设您的 ID 列是 ID。