SQL 預存程序 通過多個ID更新資料,sql預存程序

來源:互聯網
上載者:User

SQL 預存程序 通過多個ID更新資料,sql預存程序

下面舉個例子說明:

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


備忘:我把表值函數:





相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.