[討論] 請問當傳入SP的某個參數"數量"不固定時

看板Database (資料庫)作者 (meteor007)時間7年前 (2017/05/31 19:05), 7年前編輯推噓3(304)
留言7則, 4人參與, 最新討論串1/2 (看更多)
使用的是SQL Server 2012 我目前有一個SP,其中有一個參數, 每次固定傳進一個值(User透過UI點選想抓的資料),再由where挑出想要的資料 但User希望一次可點選多個資料(每次不固定) 簡單舉例,就像是原本表格有A~Z 26個字母 原本是每次單選出一個字母 現在想要"多選",且每次選的數量不同 請問我應該怎麼改寫此SP比較好? 最蠢的大概就是跑for loop query很多次,再加總所有資料, 但是我怎麼想也覺得應該會有更好的做法XD 只是我一時間沒有想法@@,求關鍵字,感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 172.218.191.30 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1496228744.A.CB9.html

05/31 19:21, , 1F
Split,用符號分隔不定量的值
05/31 19:21, 1F

05/31 19:37, , 2F
謝謝建議,我查一下資料,新手工具太少@@
05/31 19:37, 2F

05/31 20:42, , 3F
table schema 可以附一下嗎?
05/31 20:42, 3F

05/31 20:43, , 4F
簡單的舉個你目前的 SQL 語法怎麼下的
05/31 20:43, 4F

05/31 20:43, , 5F
都是文字敘述,不是很好理解XD
05/31 20:43, 5F
其實就只是像這樣 假設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

06/01 09:41, , 6F
用IN呢?
06/01 09:41, 6F

06/01 10:29, , 7F
IN不是沒辦法動態嗎? 我的@letter都可能不一樣多
06/01 10:29, 7F
最後,我使用了 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
文章代碼(AID): #1PBgE8ov (Database)
文章代碼(AID): #1PBgE8ov (Database)