SQL 存储过程 通过多个ID更新数据 分类: SQL Server ...

本文介绍了一种使用SQL存储过程更新特定品牌名称的方法,并通过表值函数处理多个输入ID,确保了代码的灵活性与复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面举个例子说明:

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


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





版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/Jackerson/p/4631990.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值