2015-02-23 94 views
0

請問如何使用帶有存儲過程的Microsoft SQL Server 2012顯示插入到歸檔表格中的行數。我的代碼顯示如下。我跑的代碼成功,但在調用存儲過程,我得到了錯誤消息指出顯示從現有表格插入到表格中的行數

消息8114,級別16,狀態5
過程p_moveTransHisttoArchive3a,行0錯誤轉換數據類型爲varchar到日期時間。

這裏是我的代碼:

IF OBJECT_ID(N'Production.p_moveTransHisttoArchive3a', N'P') IS NOT NULL 
    DROP PROCEDURE Production.p_moveTransHisttoArchive3a; 
GO 

CREATE PROCEDURE Production.p_moveTransHisttoArchive3a 
    @FiveDaysAgo DATETIME 
AS 
    SET NOCOUNT ON; 

BEGIN 
     DECLARE @counter INT; 
     SET @counter = @@ROWCOUNT 
     INSERT INTO Production.TransactionHistoryArchive 
      SELECT* 
      FROM Production.TransactionHistory 
      WHERE TransactionDate <= @FiveDaysAgo 
      RETURN @counter --No of rows moved 
END; 
GO 
+0

你需要'SET @counter = @@ ROWCOUNT'(或只是'RETURN @@ ROWCOUNT')* *後的'INSERT' – 2015-02-23 19:22:10

+1

標題是無關向你展示錯誤......大概是' TransactionDate'不是'DATETIME'。 – 2015-02-23 19:22:46

+0

你需要明確你的陳述。您應該在插入和用於填充它的選擇中按名稱列出所有列。 – 2015-02-23 19:26:01

回答

1

下面是一些接近你想要什麼,我認爲。爲什麼您的入站參數名爲FiveDaysAgo?如果您想要始終獲取超過五天前屬於INSIDE內部的行,而不是作爲參數。

CREATE PROCEDURE Production.p_moveTransHisttoArchive3a 
    @FiveDaysAgo DATETIME 
    , @RowCount int OUTPUT 
AS 
    set nocount on; 

    INSERT INTO Production.TransactionHistoryArchive 
    (
     Col1 
     , Col2 
    ) 
    SELECT Col1 
     , Col2 
    FROM Production.TransactionHistory 
    WHERE TransactionDate <= @FiveDaysAgo 

    select @RowCount = @@ROWCOUNT