Asp.net 如何返回在当前会话和当前作用域中为特定表生成的上一个标识值
我在表1中插入一行。 我正在插入表1的最后一个Srno(标识)和表2中的一些其他值 我在一个存储过程中完成了所有这一切Asp.net 如何返回在当前会话和当前作用域中为特定表生成的上一个标识值,asp.net,sql,sql-server,sql-server-2008,Asp.net,Sql,Sql Server,Sql Server 2008,我在表1中插入一行。 我正在插入表1的最后一个Srno(标识)和表2中的一些其他值 我在一个存储过程中完成了所有这一切 CREATE PROCEDURE proc_test1 ( @MultipleImgsTvp AS testdbtype READONLY, @ClaimDetailsTvp AS testdbtype1 READONLY ) AS BEGIN INSERT INTO dbo.Tbl_ClaimDetails (BranchRemark, BrMkr
CREATE PROCEDURE proc_test1
(
@MultipleImgsTvp AS testdbtype READONLY,
@ClaimDetailsTvp AS testdbtype1 READONLY
)
AS BEGIN
INSERT INTO dbo.Tbl_ClaimDetails (BranchRemark, BrMkrid, BrMkrdt, BAZClaimNo, HORemark, HoMkrid, hoMkrdt, ClaimType, ContactDetails, VendorName)
SELECT BranchRemark
, BrMkrid
, GETDATE()
, BAZClaimNo
, HORemark
, HoMkrid
, GETDATE()
, ClaimType
, ContactDetails
, VendorName
FROM @ClaimDetailsTvp
DECLARE @id INT = SCOPE_IDENTITY()
DECLARE @ClaimNo VARCHAR(25)
SET @ClaimNo = (
SELECT Em_Branchcdnew
FROM tbl_xyz
WHERE Em_empid = (SELECT BrMkrid FROM @ClaimDetailsTvp)
) + '/' + LEFT(CONVERT(VARCHAR, GETDATE(), 111), 8) + CONVERT(VARCHAR, @ID)
UPDATE Tbl_ClaimDetails
SET ClaimNo = @ClaimNo
WHERE Srno = @ID
----------
INSERT INTO Tbl_ClaimImages (img, id, imgname)
SELECT img
, id
, imgname
FROM @MultipleImgsTvp
----------
END
但我的ID总是0
更新
Tbl\u索赔详情
SrNo(identity)|备注| BrMkrdt |…等等
我想获取最后插入的Tbl_ClaimDetails的SrNo如果我理解正确,您可以使用查询的输出部分,如下所示:
INSERT INTO dbo.Tbl_ClaimDetails (BranchRemark, BrMkrid, BrMkrdt, BAZClaimNo, HORemark, HoMkrid, hoMkrdt, ClaimType, ContactDetails, VendorName)
OUTPUT inserted.id INTO @ID
SELECT BranchRemark
, BrMkrid
, GETDATE()
, BAZClaimNo
, HORemark
, HoMkrid
, GETDATE()
, ClaimType
, ContactDetails
, VendorName
FROM @ClaimDetailsTvp
对于输出部分,您可以使用inserted.column访问插入的行数据。如果我理解正确,您可以使用查询的输出部分,如下所示:
INSERT INTO dbo.Tbl_ClaimDetails (BranchRemark, BrMkrid, BrMkrdt, BAZClaimNo, HORemark, HoMkrid, hoMkrdt, ClaimType, ContactDetails, VendorName)
OUTPUT inserted.id INTO @ID
SELECT BranchRemark
, BrMkrid
, GETDATE()
, BAZClaimNo
, HORemark
, HoMkrid
, GETDATE()
, ClaimType
, ContactDetails
, VendorName
FROM @ClaimDetailsTvp
在输出部分,您可以使用inserted.column访问插入的行数据。最后的insert语句不应该是:
INSERT INTO Tbl_ClaimImages (img, id, imgname)
SELECT img
, @id
, imgname
FROM @MultipleImgsTvp
Raj您的最终插入语句不应该是:
INSERT INTO Tbl_ClaimImages (img, id, imgname)
SELECT img
, @id
, imgname
FROM @MultipleImgsTvp
Raj请向我们展示表Tbl_ClaimDetails的模式,哪一列是标识列?此链接可能会有所帮助。使用不同的方法检索id可能会有所帮助@astander请查看更新。我想从Tbl_ClaimDetails中获取最后插入行的SrNo,然后使用该SRN将行插入Tbl_ClaimImages。请向我们显示表Tbl_ClaimDetails的架构,哪一列是标识列?此链接可能会有所帮助。使用不同的方法检索id可能会有所帮助@astander请查看更新。我想从Tbl_ClaimDetails中获取最后插入行的SrNo,然后使用该SrNo+1将行插入Tbl_ClaimImages,以吸引眼球,并标记为正确答案。我可能会花几个世纪的时间试图找出问题所在。谢谢,先生+1表示吸引眼球,并标记为答案表示正确答案。我可能会花几个世纪的时间试图找出问题所在。谢谢,先生我真的不明白<代码>插入。列?是否插入了
sql关键字或其他内容?是。在输出部分,“插入的”函数类似于表名。它也有智能感知。你可以在这篇文章中找到更多我不太理解的信息/例子<代码>插入。列
?是否插入了sql关键字或其他内容?是。在输出部分,“插入的”函数类似于表名。它也有智能感知。您可以在本文中找到更多信息/示例