作者meteor007 (meteor007)
看板Database
標題[討論] 請問當傳入SP的某個參數"數量"不固定時
時間Wed May 31 19:05:39 2017
使用的是SQL Server 2012
我目前有一個SP,其中有一個參數,
每次固定傳進一個值(User透過UI點選想抓的資料),再由where挑出想要的資料
但User希望一次可點選多個資料(每次不固定)
簡單舉例,就像是原本表格有A~Z 26個字母
原本是每次單選出一個字母
現在想要"多選",且每次選的數量不同
請問我應該怎麼改寫此SP比較好?
最蠢的大概就是跑for loop query很多次,再加總所有資料,
但是我怎麼想也覺得應該會有更好的做法XD
只是我一時間沒有想法@@,求關鍵字,感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 172.218.191.30
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Database/M.1496228744.A.CB9.html
1F:推 far0802: Split,用符號分隔不定量的值 05/31 19:21
2F:→ meteor007: 謝謝建議,我查一下資料,新手工具太少@@ 05/31 19:37
3F:推 cutekid: table schema 可以附一下嗎? 05/31 20:42
4F:→ cutekid: 簡單的舉個你目前的 SQL 語法怎麼下的 05/31 20:43
5F:→ cutekid: 都是文字敘述,不是很好理解XD 05/31 20:43
其實就只是像這樣
假設table有一某個column存A-Z 欄位名稱叫做Letter
SP裡面
變數就一個
@letter varchar
select * from table
where Letter = @letter
而@letter是由ASP.NET給的
原本都是每次丟進一個@letter(單選),像是 exec sp 'B' or exec sp 'U'
但是現在想要一次丟進很多個(複選), 想改成 exec sp 同時丟進很多個字母
我的真實Table schema很雜,但是主要的目的就只是像這樣
Thx
※ 編輯: meteor007 (172.218.191.30), 06/01/2017 08:13:25
6F:推 rainsstar: 用IN呢? 06/01 09:41
7F:→ meteor007: IN不是沒辦法動態嗎? 我的@letter都可能不一樣多 06/01 10:29
最後,我使用了 table variable 傳到 SP
SP裡面使用temp table, 並 join
結束這回合XD
總覺得繞了一圈@@
※ 編輯: meteor007 (172.218.191.30), 06/01/2017 11:52:42
※ 編輯: meteor007 (172.218.191.30), 06/04/2017 15:53:52