0

我有一张表,基本上无法从中删除数据。因此,每当我更新记录时,我都必须保留以前的记录并将新的详细信息复制到新行中。我为此创建了一个存储过程,它的作用是:

  1. 用今天的日期更新以前的记录以显示它今天过期
  2. 将我传递给它的参数插入到新行中。

现在,当我在 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
4

1 回答 1

0

您能否提供您的存储过程的快照。问题不在于代码,而在于存储过程,您没有将插入语句返回的结果与更新语句返回的结果分开。在这种情况下,您的 SP 会给出更好的主意。你能提供同样的吗?

于 2013-06-14T05:33:21.207 回答