我想創建一個具有可選參數的存儲過程。我遵循列出的說明here。我也參考了SO question。不過,我不斷收到以下錯誤:SQL存儲過程中的可選參數
Error converting data type varchar to 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的唯一參考 – 2014-07-23 09:43:10