我在Table1中插入一行。 我正在插入Table1的最后一个Srno(标识)和Table2中的一些其他值 我在一个存储过程中完成所有这些操作
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_ClaimDetails
SrNo(identity) | Remark | BrMkrdt | ...so on
我想获得最后插入的Tbl_ClaimDetails的SrNo
答案 0 :(得分:3)
您的最终插入声明不应该是:
INSERT INTO Tbl_ClaimImages (img, id, imgname)
SELECT img
, @id
, imgname
FROM @MultipleImgsTvp
拉吉
答案 1 :(得分:1)
如果我理解正确,您可以使用查询的OUTPUT部分,如下所示:
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
使用OUTPUT部分,您可以使用inserted 列
访问插入的行数据。