特急!难:SQL Server 2000,存储过程中使用 IN 关键字,但范围的使用出错!!

happyer 2001-09-11 02:51:56
大虾救我!
我在存储过程中使用
SELECT * FROM Table_name
WHERE ID IN (1,3,8)
这是我的意图,其中字段 ID 是 INT 类型

但是,这个 IN 中的条件是动态改变的。
所以,我必须用一个参数将这个条件从存储过程外部传入。
可是,传入的是一个字符串变量,格式为 "1,3,8,5"
也就是说,格式就是一个数字加上一个逗号,反复如此。
但是直接将此变量放在 IN 的条件中,如下所示:
Create Proc Proc_name
@Str VARCHAR(500) = ''
AS
SELECT * FROM Table_name
WHERE ID IN (@Str_Condition)
GO
会提示出错:不能将Str转化为INT.

我必须使用存储过程,虽然我知道在ASP中用rs.open方法可以轻易实现要求,但老板不让,痛苦。

在下不知如何是好。

急盼解救为是。谢!!
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyer 2001-09-11
  • 打赏
  • 举报
回复
不错,给分!
不过你为什么又改了一些东西呢?不理解。
happyer 2001-09-11
  • 打赏
  • 举报
回复
真快啊!
我来试试,搞定给分。
zhuzhichao 2001-09-11
  • 打赏
  • 举报
回复
Create Proc Proc_name
@Str_Condition VARCHAR(500)
AS
declare @v_sql varchar(500)
set @v_sql = 'SELECT * FROM Table_name
WHERE ID IN ('+@Str_Condition+')'
exec (@v_sql)
GO
zhuzhichao 2001-09-11
  • 打赏
  • 举报
回复
Create Proc Proc_name
@Str VARCHAR(500) = ''
AS
declare @v_sql varchar(500)
set @v_sql = 'SELECT * FROM Table_name
WHERE ID IN ('+@Str_Condition+')'
exec (@v_sql)
GO

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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