ストアドプロシージャでラップされた次の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がエラーの原因であることに気づきました。
編集:エラーの理由がわかったので...そして実際にたくさんのパラメータがあるという事実を考えると...あなたたちは解決策として何をお勧めしますか?