如何在两个 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
我同时想要 PersonId
和 ClientCompanyId
。
为什么不在第二次插入后用@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。
这里我将值插入两列,但现在我想同时声明刚刚创建的值:
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
我同时想要 PersonId
和 ClientCompanyId
。
为什么不在第二次插入后用@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。