Я пытаюсь создать хранимую процедуру с необязательными параметрами. Я следовал приведенным ниже инструкциям здесь. Я также сослался на этот вопрос SO . Однако я продолжаю получать следующую ошибку:
Ошибка преобразования типа данных varchar в int.
Он работает, когда я выполняю его как
EXEC sp_get_user {id#}
or
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, если это имеет значение.