您的位置:首页 > 数据库

SQL 存储过程 通过多个ID更新数据

2014-12-08 16:08 507 查看
下面举个例子说明:

我想让一部分品牌的名称(即Brand_Name)后面加上1,Brand_ID是主键,sql语句很容易实现,但是存储过程如何写呢?

错误写法如下:

//************************************************

ALTER PROC [dbo].[存储过程名]

@Brand_IDs varchar(max)


AS

BEGIN

UPDATE T_System_Brand

SET

Brand_Name=Brand_Name+'1'

WHERE Brand_ID IN (@Brand_IDs)

END

//**************************************************

正确的写法(分两步):

第一步:

在数据中
可编程行->函数->表值函数
中添加一个函数,具体如下:

ALTER FUNCTION [dbo].[Split]

(

@c VARCHAR(MAX) ,

@split VARCHAR(50)

)

RETURNS @t TABLE ( col VARCHAR(50) )

AS

BEGIN

WHILE ( CHARINDEX(@split, @c) <> 0 )

BEGIN

INSERT @t( col )

VALUES ( SUBSTRING(@c, 1, CHARINDEX(@split, @c) - 1) )

SET @c = STUFF(@c, 1, CHARINDEX(@split, @c), '')

END

INSERT @t( col ) VALUES ( @c )

RETURN

END

第二步:

在存储过程中可以这样写:

ALTER PROC [dbo].[存储过程名]

@Brand_IDs varchar(max)

AS

BEGIN

UPDATE T_System_Brand

SET

Brand_Name=Brand_Name+'1'

WHERE Brand_ID IN ( SELECT * FROM Split(@Brand_IDs , ','))

END

备注:我把表值函数截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: