我创建了一个像这样的存储过程
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',未提供
我的手术有问题吗?
答案 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