我有这个由存储过程包装的 SQL 函数:
ALTER FUNCTION dbo.GetObjList
(
@filterUID int = NULL,
@filterSID varchar(32) = NULL
)
RETURNS TABLE
AS
RETURN
SELECT ROW_NUMBER() OVER (ORDER BY UID) AS [RowNumber], *
FROM ObjTable
WHERE
(COALESCE(@filterUID, @filterSID) IS NULL) OR
(
((@filterUID IS NOT NULL) AND (UID = @filterUID)) OR
((@filterSID IS NOT NULL) AND (SID = @filterSID))
)
为什么我会收到这样的错误:“将 varchar 值 'abc' 转换为数据类型 int 时转换失败。” @filterSID = 'abc'
如果我仅作为参数传递(其他参数为默认值)?
我注意到 COALESCE 对错误负责。
编辑:现在我得到了错误的原因......并且考虑到我实际上有很多参数......你们会推荐什么作为解决方案?