SQL Server 2000 存储过程: 需要参数,但未提供

SQL Server 2000 Stored Procedure : expects parameter , which was not supplied

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

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
Procedure 'SP_COMP' expects parameter '@rn_from', which was not supplied

我的程序有问题吗?

一个问题可能是您使用的前缀 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

我也不建议用 '' 值填充 table,最好使用 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