2016-10-03 80 views
0

我試圖將可變數量的數字傳遞給存儲過程以限制其輸出。假設我有6個部門,編號分別爲1,2,3,4,5,6。我希望用戶輸入各種數字。所以他們可能會選擇1,3,6或者2,4或者3,或者他們想看的任何東西。這可以像存儲過程的WHERE子句中的變量一樣傳遞給IN語句嗎?如果不是,那麼可以怎麼做呢?我想盡可能保持簡單。謝謝!將變量傳遞給SQL語句中的IN語句存儲過程

+0

佔位符只能表示SINGLE值。您無法在一個佔位符中傳遞多個值,例如'where where foo IN(?)'並傳入'1,2,3'將被執行,就像它被寫入'WHERE foo ='1,2,3''一樣。當你有任意數量的佔位符時,你不能使用「預先」準備好的語句。您必須使用盡可能多的佔位符動態構建您的查詢字符串,然後使用1:1映射傳遞它們。 –

+1

一種選擇是將逗號分隔的數字串轉換爲臨時表,然後在查詢中連接或以其他方式使用該臨時表。一種方法:http://www.codeproject.com/Tips/584680/Using-comma-separated-value-parameter-strings-in-S –

+3

什麼是您的DBMS? – Serg

回答

0

將值數組傳遞給存儲過程的通用且健壯的SQL方法需要多個語句。

  1. 將您的值插入(臨時)表。
  2. 調用你的存儲過程應該包含連接邏輯到這個表。
  3. 刪除最近從表中添加值(如有必要)

您可能需要附上這些語句放入交易。