SQL Server 2000存储过程:期望参数,未提供

时间:2017-09-28 07:19:04

标签: sql-server stored-procedures sql-server-2000

我创建了一个像这样的存储过程

ALTER PROC [dbo].[SP_COMP]
    (@comp_seq INT,
     @channel VARCHAR(10),
     @comp_type VARCHAR(10),
     @periode_awal DATETIME,
     @periode_akhir DATETIME,
     @period_type VARCHAR(20),
     @rn_from DATETIME,
     @mode int)

然后我执行它:

EXEC [SP_COMP] 16, 'A', '', '2017-07-16', '2017-07-31', 'MONTH_END', '2017-07-01', 6

但是我收到了这个错误:

  

Msg 201,Level 16,State 3,Procedure SP_COMP,Line 0
  程序' SP_COMP'期望参数' @ rn_from',未提供

我的手术有问题吗?

1 个答案:

答案 0 :(得分:0)

您使用的前缀SP_可能存在一个问题 见http://sqlperformance.com/2012/10/t-sql-queries/sp_prefix 这个https://msdn.microsoft.com/en-us/library/ms190669(v=sql.105).aspx

还尝试创建日期时间变量以传递给程序 也总是使用语言中性格式的日期时间值,请参阅本文
http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes

declare @periode_awal DATETIME = '20170716'
declare @periode_akhir DATETIME = '20170731'
declare @rn_from DATETIME = '20170701'

EXEC [dbo].[SP_COMP] 16, 'A', '', @periode_awal, @periode_akhir, 'MONTH_END', @rn_from, 6

我也不建议您使用''值,最好使用null

修改
当你改变程序并在一个会话中调用它时,请在两个语句之间添加一个GO

ALTER PROC [dbo].[SP_COMP](
    @comp_seq INT,
    @channel VARCHAR(10),
    @comp_type VARCHAR(10),
    @periode_awal DATETIME,
    @periode_akhir DATETIME,
    @period_type VARCHAR(20),
    @rn_from DATETIME,
    @mode int
)

GO -- always put this after an alter or create statement

declare @periode_awal DATETIME = '20170716'
declare @periode_akhir DATETIME = '20170731'
declare @rn_from DATETIME = '20170701'

EXEC [dbo].[SP_COMP] 16, 'A', '', @periode_awal, @periode_akhir, 'MONTH_END', @rn_from, 6