Asp.net 如何获取一个表标识列值以及如何在存储过程中使用该值

Asp.net 如何获取一个表标识列值以及如何在存储过程中使用该值,asp.net,Asp.net,我有两个表UserInfo和UserContact。我使用标识列(ID)成功地将数据插入到UserInfo表中。我正在使用存储过程将数据插入表中 UserInfo (Id, FirstName, LastName, Address) Usercontact(Id, UserInfoId, ContactNumber) 我想插入第二个表。如何从第一个表中获取Id以及如何在第二个表的存储过程中使用该Id。对于SQL SERVER:使用(Transact-SQL):返回插入到同一范围内的标识列

我有两个表
UserInfo
UserContact
。我使用标识列(
ID
)成功地将数据插入到
UserInfo
表中。我正在使用存储过程将数据插入表中

UserInfo (Id, FirstName, LastName, Address)   
Usercontact(Id, UserInfoId, ContactNumber)

我想插入第二个表。如何从第一个表中获取Id以及如何在第二个表的存储过程中使用该Id。

对于SQL SERVER:使用(Transact-SQL):返回插入到同一范围内的标识列中的最后一个标识值。作用域是一个模块:存储过程、触发器、函数或批处理。因此,如果两条语句位于同一存储过程、函数或批处理中,则它们位于同一范围内

例如:

您可以使用Scope_identity()或IDENT_CURRENT('tablename')

选择范围\标识() 它返回在连接上以及由同一范围内的语句生成的最后一个标识值,而不考虑生成该值的表。 SCOPE_IDENTITY()与@IDENTITY一样,将返回在当前会话中创建的最后一个标识值,但它也将其限制在当前范围内。换句话说,它将返回您显式创建的最后一个标识值,而不是由触发器或用户定义函数创建的任何标识

选择当前标识(“表名”)
它返回表中生成的最后一个标识值,而不管创建该值的连接如何,也不管生成该值的语句的范围如何。 当前标识不受范围和会话的限制;它仅限于指定的表。IDENT_CURRENT返回为任何会话和任何作用域中的特定表生成的标识值

*注意:为了避免与以后添加触发器相关的潜在问题,请始终使用SCOPE_IDENTITY()返回T SQL语句或存储过程中最近添加的行的标识*

有关更多信息,请参阅此博客文章


需要知道您正在使用哪个DBMS(和版本)。SQL Server?感谢回复KPL。我编写了带两个表插入的stroed过程。但当我试图执行第一个表时,它显示错误。
Insert Into UserInfo (FirstName,LastName,Address) 
Values (@FirstName,@LastName,@Address);

Declare @id int
SELECT @id = SCOPE_IDENTITY();

Insert Into Usercontact (Id,UserInfoId,ContactNumber) 
Values (@id,@UserInfoId,@ContactNumber);