2

我在 Table1 中插入一行。我正在插入此 Table1 的最后一个 Srno(identity) 和 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

4

2 回答 2

3

您的最终插入语句不应该是:

 INSERT INTO Tbl_ClaimImages (img, id, imgname)
        SELECT  img
            ,   @id
            ,   imgname
        FROM @MultipleImgsTvp

拉吉

于 2013-09-03T08:42:21.697 回答
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 部分,您可以使用 insert 访问插入的行数据。柱子

于 2013-09-03T08:35:24.470 回答