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
我创建了一个这样的存储过程
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