在SQL Server中,如何在存储过程中传递可选参数?
我正在尝试传递可选变量。用户可以传递值,也可以不传递 我尝试的是:在SQL Server中,如何在存储过程中传递可选参数?,sql,sql-server,stored-procedures,syntax-error,Sql,Sql Server,Stored Procedures,Syntax Error,我正在尝试传递可选变量。用户可以传递值,也可以不传递 我尝试的是: ALTER PROCEDURE spSampleProc @Alias NVARCHAR(25) = NULL, @CountDate DATE AS BEGIN SELECT * FROM ST INNER JOIN Item ON Item.id = st.itemid LEFT JOIN PIC_User ON
ALTER PROCEDURE spSampleProc
@Alias NVARCHAR(25) = NULL,
@CountDate DATE
AS
BEGIN
SELECT
*
FROM
ST
INNER JOIN
Item ON Item.id = st.itemid
LEFT JOIN
PIC_User ON ST.HandHeldNo = PIC_User.ID
LEFT JOIN
ViewRecord AS Alias ON Alias.itemid = item.ID
LEFT JOIN
Department ON Department.ID = item.DepartmentID
LEFT JOIN
Category ON category.id = item.CategoryID
WHERE
(@Alias IS NULL OR (Alias.Alias LIKE '%' + @Alias + '%'))
AND ST.Date >= @CountDate
END
运行它:
EXEC spSampleProc @CountDate = '2018/09/01' @Alias = '6281063633419'
我创建了一个没有任何语法错误的存储过程。但当我执行该过程时,它会抛出以下错误:
“@Alias”附近的语法不正确
两个参数之间缺少逗号:
Exec spSampleProc @CountDate='2018/09/01', @Alias='6281063633419'
-- Here ---------------------------------^
两个参数之间缺少逗号:
Exec spSampleProc @CountDate='2018/09/01', @Alias='6281063633419'
-- Here ---------------------------------^
EXE语句中的参数之间缺少逗号。此外,您还需要一个GO after END,以便proc调用本身。您在EXE语句中遗漏了参数之间的逗号。此外,还需要一个GO-after-END,以便proc调用本身。