2012-02-28 89 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

存储过程带有参数,因此最后在尝试执行时应给出参数。