【发布时间】:2011-04-07 20:51:29
【问题描述】:
我正在尝试创建一个具有可选参数的存储过程。我按照here 列出的说明进行操作。我还引用了这个SO question。但是我不断收到以下错误:
将数据类型 varchar 转换为 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 的唯一引用
标签: linq sql-server-2008 stored-procedures optional-parameters