首页 > 解决方案 > 更新命令运行但在 Dapper 中返回 -1

问题描述

我正在使用下面的代码来更新记录,它会更新特定的记录,但它会返回 -1 。

我正在使用 Dapper 执行此过程:

ALTER PROCEDURE [dbo].[Contact]
    @ContactId VARCHAR(50) ,
    @AccountId VARCHAR(50) ,
    @EmailAddress NVARCHAR(100)
AS
BEGIN
    DECLARE MID bigint = 0

    SELECT TOP 1 MID = CID 
    FROM Type3002 
    WHERE ATTRIBUTE_2710 LIKE CAST(@EMailAddress AS VARCHAR(100))

    IF NOT EXISTS (SELECT * FROM Type3002     
                   WHERE ContactId LIKE '%,' + CAST(@ContactId AS VARCHAR(100)) + ',%') 
    BEGIN 
        UPDATE Type3002
        SET ATTRIBUTE_2710 = LEFT(@EMailAddress, 50),
            ContactId = ContactId +','  + @ContactId,
            AccountId = AccountId ++','+ @AccountId 
        WHERE CID = MID
    END
    ELSE IF NOT EXISTS (SELECT * FROM Type3002 
                        WHERE AccountId LIKE '%,' + @AccountId + ',%' 
                          AND ContactId LIKE '%,' + @ContactId)
    BEGIN 
        UPDATE Type3002
        SET AccountId = AccountId +','+ @AccountId 
        WHERE CID = MID
    END
END

调用此过程的代码如下:

var result = await connection.ExecuteAsync("[Contact]",

标签: sql-servertsqldapper

解决方案


您的程序缺少一条RETURN语句。

请注意,在 Transact-SQL 中,很少使用 RETURN(它只能是一个int值,不能为 NULL)。OUTPUT 参数更有用。

MID应该@MID无处不在。


推荐阅读