У меня есть эта функция 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'
в качестве параметров (и DEFAULT для других)?
Я заметил, что COALESCE ответственен за ошибку.
РЕДАКТИРОВАТЬ: Теперь, когда я получил причину ошибки ... и учитывая тот факт, что у меня действительно много параметров ... что вы, ребята, порекомендовали бы в качестве решения?