码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2014-12-08 17:52:53      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:sql   存储过程   id的集合   

下面举个例子说明:

我想让一部分品牌的名称(即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


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

bubuko.com,布布扣




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

标签:sql   存储过程   id的集合   

原文地址:http://blog.csdn.net/u013816709/article/details/41804569

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!