我有一個存儲過程,需要在SQL Server 2012中傳遞多個參數。我的應用程序將爲所有員工或特定員工構建一個報告。如果用戶想要選擇某些員工而不是全部員工,我有一個員工覈對清單框。我想在存儲過程的where子句中使用那些選定的員工。我讀過SQL Server 2012,你可以將一個表作爲參數傳遞給多個值。我似乎無法找到一個適合我的情況的好例子。任何幫助將不勝感激。將多個參數傳遞到SQL Server存儲過程
回答
假設你傳遞了EmployeeIDs,它們是整數。首先,在數據庫中創建一個表類型:
CREATE TYPE dbo.EmployeesTVP AS TABLE(EmployeeID INT PRIMARY KEY);
現在你的存儲過程可以說:
CREATE PROCEDURE dbo.GetEmployees
@empTVP dbo.EmployeesTVP READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT EmployeeID, Name FROM dbo.Employees AS e
WHERE EXISTS (SELECT 1 FROM @empTVP WHERE EmployeeID = e.EmployeeID);
END
GO
如果你要處理的所有情況下,你可以說:
IF EXISTS (SELECT 1 FROM @empTVP)
SELECT EmployeeID, Name FROM dbo.Employees AS e
WHERE EXISTS (SELECT 1 FROM @empTVP WHERE EmployeeID = e.EmployeeID);
ELSE
SELECT EmployeeID, Name FROM dbo.Employees;
(您可以將這些條件與OR
條件相結合,但我傾向於認爲這只是優化程序的適合。)
然後,在複選框的C#代碼中創建一個DataTable,並將該參數作爲Structured
的參數類型傳遞給存儲過程。您可以填寫其餘但是:
DataTable tvp = new DataTable();
// define/populate DataTable from checkboxes
using (connectionObject)
{
SqlCommand cmd = new SqlCommand("dbo.GetEmployees", connectionObject);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter tvparam = cmd.Parameters.AddWithValue("@empTVP", tvp);
tvparam.SqlDbType = SqlDbType.Structured;
// ... execute the cmd, grab a reader, etc.
}
+1:漂亮的解決方案 –
即將關閉。我將不得不在我的存儲過程中執行此操作: 其中empName類似於「參數」 或empName類似於「parameter1」 – grath
@grath好吧,相同的概念,你能適應它嗎?你的問題聽起來像是你要麼傳遞一個或多個員工ID,要麼沒有。 –
- 1. 如何將多個參數傳遞到SQL Server存儲過程
- 2. 將一個布爾參數傳遞給SQL Server存儲過程
- 3. Delphi - 將表值參數傳遞給SQL Server存儲過程
- 4. C#Winforms - 如何將參數傳遞給SQL Server存儲過程
- 5. 問題將XML參數傳遞給SQL Server存儲過程
- 6. 將xml字符串參數傳遞給SQL Server存儲過程
- 7. 使用PHP PDO將參數傳遞給SQL Server存儲過程
- 8. 使用OpenXML將多個參數傳遞給SQL Server存儲過程
- 9. 通過Delphi傳遞SQL Server存儲過程參數名稱
- 10. 將參數從一個存儲過程傳遞到另一個存儲過程
- 11. 傳遞多個參數到SQL Server
- 12. SQL存儲過程將參數傳遞到「order by」
- 13. 將參數傳遞給存儲過程
- 14. SQL Server 2012 - 將存儲過程名稱傳遞給另一個存儲過程
- 15. 將對象集合作爲參數傳遞到SQL Server存儲過程
- 16. 將參數從訪問變量傳遞到SQL Server存儲過程
- 17. 在SQL Server存儲過程中使用參數傳遞表名
- 18. 將許多值傳遞給SQL Server存儲過程
- 19. 將多行傳遞給SQL Server存儲過程
- 20. 傳遞參數到存儲過程
- 21. 將多個參數傳遞給存儲過程
- 22. 如何將值行傳遞到SQL Server存儲過程?
- 23. 如何將日期傳遞到SQL Server存儲過程
- 24. 將數組傳遞給SQL Server存儲過程
- 25. 將數據集傳遞給SQL Server存儲過程
- 26. 如何將可變數量的參數傳遞給SQL Server存儲過程?
- 27. 將數組傳遞到存儲過程
- 28. 存儲過程 - 將兩個值傳遞到存儲過程
- 29. 通過存儲過程傳遞參數
- 30. 如何將多個參數傳遞到一個mysql存儲過程
請參閱:[Sql參數](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter(v = vs.110).aspx)。 – Brian