sql-server - 更新命令运行但在 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]",
解决方案
您的程序缺少一条RETURN
语句。
请注意,在 Transact-SQL 中,很少使用 RETURN(它只能是一个int
值,不能为 NULL)。OUTPUT 参数更有用。
也MID
应该@MID
无处不在。
推荐阅读
- r - 使用不匹配的对删除括号之间的文本
- redis - redis中的订阅系统
- c# - 如何检查项目是否未初始化?
- javascript - 使用 JavaScript 从 JSON 获取信息并保存在 SQL Server 中
- java - Yelp android 工作室 VALIDATION_ERROR
- r - 在 for 循环中使用条件来创建唯一的面板 ID
- sas - 将宏函数作为参数传递给另一个宏函数
- rabbitmq - Spring Cloud Task 未使用 RabbitMQ 使用 Spring Cloud Stream 启动
- jasper-reports - Jasper Report - 多列页眉和页脚
- sql - 自动截断 SQL 中的值