2013-10-31 194 views
4

语法错误我最近写了这些参数的存储过程:与SQL Server存储过程

@dFromDT DATE, 
@dToDT DATE, 
@sErrorMessage NVARCHAR(MAX), 
@sPartCustom INT, 
@sPartCustomFilter NVARCHAR(254), 
@nIncludeMessage INT 

我试图打电话与行的过程:

EXEC _MG_ERPPartFilter(CONVERT(datetime, '2013-01-01T00:00:00', 126), CONVERT(datetime, '2050-12-31T00:00:00', 126), '',5, '556', 0) 

,我总是得到的是错误信息:

Incorrect syntax near the keyword 'CONVERT'.

即使当我写这行:

EXEC _MG_ERPPartFilter('2013-01-01','2050-12-31', '',5, '556', 0) 

我得到这个错误:

Incorrect syntax near '2013-01-01'.

所有的名字是正确的。

有人可以帮助我吗?

+2

你不能在表达式'EXEC'命令 - 您只需要文字值或SQL Server变量。使用SQL Server变量来保存'CONVERT'的结果,然后在'EXEC'调用中使用该变量... –

回答

4

不要在你的第二个例子中使用括号:

EXEC _MG_ERPPartFilter '2013-01-01','2050-12-31', '',5, '556', 0 

,并在第一,你必须值转换为临时变量,并将它们传递给exec命令:

declare @date1 datetime, @date2 datetime 

set @date1 = CONVERT(datetime, '2013-01-01T00:00:00', 126) 
set @date2 = CONVERT(datetime, '2050-12-31T00:00:00', 126) 

EXEC _MG_ERPPartFilter @date1, @date2, '',5, '556', 0