我想创建一个具有可选参数的存储过程。我遵循列出的说明here。我也参考了SO question。不过,我不断收到以下错误:SQL存储过程中的可选参数
Error converting data type varchar to int.
它的工作原理,当我执行它
EXEC sp_get_user {id#}
或
EXEC sp_get_user NULL, {username}
但失败
EXEC sp_get_user {username}
存储过程
@id int = NULL,
@username nvarchar(50) = NULL
SELECT
username = COALESCE(a.Username, b.Username),
password = COALESCE(a.Password, b.Password),
signup_date = COALESCE(a.SignedUpOn, b.Signup_Date)
FROM table1 a
FULL OUTER JOIN table 2 b
ON a.ID = b.ID
WHERE ((a.ID = @id OR @id IS NULL)
AND (a.Username = @username OR @username IS NULL)
OR (b.ID = @id OR @id IS NULL)
AND (b.Username = @username OR @username IS NULL))
我曾尝试加入OPTION(RECOMPILE)
并没有成功。我希望使这种动态变化,以便其他开发人员可以调用此SP,而无需每次指定所有参数。如果有所不同,他们将通过LINQ连接。在这种情况下
通过google找到的旧问题 - 为什么将此标记为LINQ? “通过LINQ连接”是LINQ的唯一参考 – 2014-07-23 09:43:10