2012-02-28 79 views
0

我試圖在SQL Server 2008中創建一個存儲過程,根據解析器,語法是OK。然而,當我嘗試執行存儲過程,並通過實際值,以下錯誤出現:SQL服務器 - 存儲過程

消息201,級別16,狀態4,程序 SaveOneTimeDonation,行0
過程或函數「SaveOneTimeDonation」期望提供的參數'@donation'不是 。

自嘆不如,該數據實際上是插入到表中,所以我不知道爲什麼它會顯示這個錯誤。

我怎麼能解決這個問題嗎?以下是代碼:

SET ANSI_NULLS ON 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROC [dbo].[SaveOneTimeDonation] 
    @donation float, 
    @date nvarchar 
AS 
    INSERT INTO OneTime_Trans(Donation, Trans_Date) VALUES (@donation, @date) 

    exec SaveOneTimeDonation 
+1

究竟如何你打SaveOneTimeDonation?另外爲什麼SaveOneTimeDonation自己調用? – UnhandledExcepSean 2012-02-28 13:23:43

+0

注意:如果它是'@ date' - 爲什麼它被定義爲'nvarchar'數據類型?另外:通過不指定任何**長度**,你會得到一個'nvarchar(1)' - 1個字符長........ – 2012-02-28 14:38:18

+0

如果它是一個日期 - 定義它是這樣的! '@date DATE' - 如果它是一個可變長度的字符串,** define **一個長度:'@date NVARCHAR(20)'或任何適合的 – 2012-02-28 14:39:06

回答

2

最後一行正在執行存儲過程。在那裏它缺少參數。

exec SaveOneTimeDonation 

祝你好運!

+0

感謝您的幫助。我剛開始學習存儲過程。我通過刪除最後一行來解決問題。謝謝您的幫助 :) – Matthew 2012-02-28 13:27:07

1

存儲過程帶有參數,因此最後在嘗試執行時應給出參數。