存储过程 给in怎么传参啊?

yzy8788 2010-09-08 04:26:50
我现在存储过程中有一个in
我是这样做的


CREATE PROCEDURE QueryForRoom_Procedure
@hpWay varchar
AS
begin
select top 50 t.*,m.Integral,m.username from
(
select * from
(
select top 50 * from shua_tasks where hpWay in (@hpWay) and isHidden='0' and status='1' order by ftime desc
) t1

union all

select * from
(
select top 50 * from shua_tasks where hpWay in (@hpWay) and isHidden='0' and status<>'1' order by ftime desc
) t2
) t left join shua_member m on t.fuserid=m.userid

end
GO



然后我调用存储过程的时候给@status传参'1,2,3,4',但是发现执行处理的结果不对。
请先人指点哦~
...全文
100 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lymmingv 2010-09-10
  • 打赏
  • 举报
回复
传进来的值要用字符串拼接。同5楼。
bing0804 2010-09-10
  • 打赏
  • 举报
回复
CREATE PROCEDURE QueryForRoom_Procedure
@hpWay varchar
AS
begin

declare @sql varchar(4000)

set @sql='

select top 50 t.*,m.Integral,m.username from
(
select * from
(
select top 50 * from shua_tasks where hpWay in ('+ @hpWay +') and isHidden=''0'' and status=''1'' order by ftime desc
) t1

union all

select * from
(
select top 50 * from shua_tasks where hpWay in ('+ @hpWay +') and isHidden=''0'' and status<>''1'' order by ftime desc
) t2
) t left join shua_member m on t.fuserid=m.userid'

exec(@sql)

end
GO
yzy8788 2010-09-08
  • 打赏
  • 举报
回复
我这个字段hpWay 是int型的。
水族杰纶 2010-09-08
  • 打赏
  • 举报
回复
@hpWay varchar --这样要指定长度 否则 就一个长度字符
水族杰纶 2010-09-08
  • 打赏
  • 举报
回复
select top 50 * 
from shua_tasks
where charindex(','+ltrim(hpWay)+',',','+@hpWay+',')>0
hao1hao2hao3 2010-09-08
  • 打赏
  • 举报
回复
里面的@hpWay 换成

replace(''''+@hpWay +'''',',',''',''')

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧