我有一张表,从中可以基本上不删除数据。 因此,每当我更新记录时,我都必须保留以前的记录并将新细节复制到新行中。 我为此创建了一个存储过程,它的作用是:
现在,当我在SQL Server 2008中执行此过程时,它会完美地显示2行受影响。 但是当我从我的程序(它的MVC应用程序)调用它时,只发生更新 - 没有插入。
执行时没有错误或异常。
从ExecuteNonQuery()
返回的行数为1。
有没有人有任何想法,可能是什么问题?
以下是正在做的事情
ALTER PROCEDURE sp_ABC
(
@Primarykey int,
@Desc varchar(2000),
@Actor varchar(10),
@txtCreatedBy char(6),
@dtEfectiveEnd datetime
)
AS
BEGIN
DECLARE @currentTime DATETIME, @intDeclarationID int
SET @currentTime = GETDATE()
SELECT @intDeclarationID = (MAX([intDeclarationId])+1) FROM tbl_ABC
BEGIN TRY
UPDATE tbl_ABC
SET [dtEffectiveEnd] = GETDATE()
,[txtLastModifiedBy] = @txtCreatedBy
,[dtLastModifiedBy] = GETDATE()
WHERE intDeclarationId = @Primarykey
INSERT INTO tbl_ABC
(
[intDeclarationId]
,[txtDeclarationDesc]
,[txtActor]
,[dtCreated]
,[txtCreatedBy]
,[dtLastModifiedBy]
,[txtLastModifiedBy]
,[dtEffectiveEnd]
)
VALUES
(
@intDeclarationID,
@Desc,
@Actor,
@currentTime,
@txtCreatedBy,
@currentTime,
@txtCreatedBy,
@dtEfectiveEnd
)
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS ErrorMessage
END CATCH
END
END
GO
答案 0 :(得分:0)
您能否提供存储过程的快照。问题不在代码中,而是在存储过程中,您不分离insert语句返回的结果和更新语句返回的结果。在这种情况下,您的SP会提供更好的主意。能否请你提供相同的。