Команда обновления запускается, но возвращает -1 в Dapper - PullRequest
0 голосов
/ 12 января 2019

Я использую приведенный ниже код для обновления записи, она обновляет конкретную запись, но возвращает -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]",

1 Ответ

0 голосов
/ 12 января 2019

В вашей процедуре отсутствует оператор RETURN.

Обратите внимание, что в Transact-SQL RETURN используется редко (это может быть только значение int и не может быть NULL). Выходные параметры гораздо полезнее.

Также MID должно быть @MID везде.

...