VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: mgs_pexp

存储过程接收多个参数问题 高手请进

[复制链接]

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-26 20:45:01 | 显示全部楼层
楼上大侠 弄点完整代码行吗?????不要再说思路!!!!
回复

使用道具 举报

1

主题

10

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-3-26 21:15:02 | 显示全部楼层
是啊~!!!!!我要的是代码 不是思路
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-26 21:30:01 | 显示全部楼层
参考一下

CREATE PROCEDURE Test
    @idString NVARCHAR(1000) //如其值为1,2,3,4,6,7,8
AS
    DECLARE @sql NVARCHAR(2000)

    SET @sql = 'UPDATE Images SET [Name]=''测试'' WHERE ID IN (' + @idStrings + ')'

    exec @sql


@idStrings从你上面的代码组合,形式如下:
    imgeid1,imageid2,imageid3

前提ID字段要为整型(比如int、bigint)
回复

使用道具 举报

0

主题

14

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-27 02:15:01 | 显示全部楼层
字符串 @idString 末尾不能带有“,”,即不能为“1,2,3,4,6,7,8,”,应该为“1,2,3,4,6,7,8”
回复

使用道具 举报

0

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-27 08:45:01 | 显示全部楼层
这样说吧:我在页面后台把选中的图片ID组合成一个字符串 中间用逗号隔开如:“1,2,3,4,6,7,8,”
这样传到存储过程里,存储过程把这串ID分割开,再根据这些ID把name字段该成“测试”。
具体怎么存储过程怎么写
-----------------------------------------------------
@s="1,2,3,4,6,7,8"

update YourTable set name='测试' where charindex(','+rtrim(id)+',' , ','+@s+',')>0
回复

使用道具 举报

1

主题

10

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-3-27 13:00:01 | 显示全部楼层
SET @sql = 'UPDATE Images SET [Name]=''测试'' WHERE ID IN (' + @idStrings + ')'

@idStrings是哪来的?????? 打错了?
回复

使用道具 举报

0

主题

14

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-27 14:00:01 | 显示全部楼层
字符串组合后可以用Trim(',')进行预处理,同时不能为空"",存储过程中可以增加判断
if(@idString <> '' )
begin
    DECLARE @sql NVARCHAR(2000)

    SET @sql = 'UPDATE Images SET [Name]=''测试'' WHERE ID IN (' + @idStrings + ')'

    exec @sql
end
回复

使用道具 举报

1

主题

18

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-3-27 14:45:01 | 显示全部楼层
where id in (your string)
我一般是这样做的。你把id用","加在一起,再在sql里执行,很好的。
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-28 08:45:01 | 显示全部楼层
SET @sql = 'UPDATE Images SET [Name]=''测试'' WHERE ID IN (' + @idStrings + ')'

@idStrings是哪来的?????? 打错了?

=================
不会吧,就是你程序传给存储过程的参数啊
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-28 12:45:01 | 显示全部楼层
另exec @sql改为exec(@sql)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表