在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调用本身。