作者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/cn.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