• SQL动态更新表字段 传入字段可能为空


     小技巧: 项目组有修改产品的基本信息字段 但有时候传入的字段可能为空 也可能不为空  动态修改表中字段.

     1 USE [BetaProductMarket_DB]
     2 GO
     3 IF(EXISTS(SELECT * FROM dbo.sysobjects WHERE id=object_id(N'[dbo].[USP_SaveProductBaseInfo]') AND OBJECTPROPERTY(id,   N'IsProcedure')= 1))
     4 BEGIN
     5     DROP PROCEDURE [dbo].USP_SaveProductBaseInfo
     6 END
     7 GO
     8 
     9 /*
    10 作    者:Roni
    11 功    能:修改产品基本信息
    12 创建时间:2016-5-24
    13 
    14 摘    要:
    15     
    16 */
    17 
    18 CREATE PROCEDURE [dbo].USP_SaveProductBaseInfo
    19 
    20     @ProductID INT,
    21     @ProductType TINYINT=0,
    22     @ProductName VARCHAR(200)=null ,
    23     @RecommendIndex TINYINT=0     ,
    24     @Issuer VARCHAR(200)=null,
    25     @Period TINYINT=0    ,
    26     @Movement VARCHAR(300)=null ,
    27     @InvestmentDirection TINYINT=7,
    28     @YieldsFixed   DECIMAL(18, 4)=0    ,
    29     @YieldsFloat   DECIMAL(18, 4)=0     ,
    30     @YieldsType     TINYINT=0    ,
    31     @Amount    DECIMAL(18, 4)=0     
    32  
    33 AS
    34 
    35 BEGIN
    36 
    37     
    38 UPDATE Tb_Product   
    39 SET  UpdateTime=GETDATE(),
    40         ProductName= CASE WHEN @ProductName IS NULL THEN Tb_Product.ProductName ELSE @ProductName END ,
    41         ProductType= CASE WHEN @ProductType=0 THEN Tb_Product.ProductType ELSE @ProductType END   ,
    42         RecommendIndex = CASE WHEN @RecommendIndex =0 THEN Tb_Product.RecommendIndex ELSE @ProductType END     ,
    43         Issuer= CASE WHEN @Issuer IS NULL THEN Tb_Product.Issuer ELSE @Issuer END ,
    44         Period= CASE WHEN @Period=0 THEN Tb_Product.Period ELSE @Period END   ,
    45         Movement= CASE WHEN @Movement IS NULL THEN Tb_Product.Movement ELSE @Movement END ,
    46         InvestmentDirection= CASE WHEN @InvestmentDirection=7 THEN Tb_Product.InvestmentDirection ELSE @InvestmentDirection END   ,
    47         YieldsFixed= CASE WHEN @YieldsFixed=0 THEN Tb_Product.YieldsFixed ELSE @YieldsFixed END   ,
    48         YieldsFloat= CASE WHEN @YieldsFloat=0 THEN Tb_Product.YieldsFloat ELSE @YieldsFloat END   ,
    49         YieldsType= CASE WHEN @YieldsType=0 THEN Tb_Product.YieldsType ELSE @YieldsType END   ,
    50         Amount= CASE WHEN @Amount=0 THEN Tb_Product.Amount ELSE @Amount END   
    51 WHERE ProductID = @ProductID
    52 
    53 
    54 
    55 
    56       
    57 
    58 END
  • 相关阅读:
    linux三剑客之grep
    MySQL练习(1)
    appium获取toast方法
    Could not parse UiSelector argument: 'XXX' is not a string 错误解决办法
    基于python的几种排序算法的实现
    生成allure测试报告之后,服务器端口无法访问查看生成的report,可能是这样引起的。
    通过源码看原理之 selenium
    如何查看浏览器记住的密码
    传智播客JavaWeb day09-mysql入门、数据库操作、数据库表操作、数据行操作
    SQLServer数据库表架构和数据保存成sql文件
  • 原文地址:https://www.cnblogs.com/benbenfishfish/p/5772347.html
Copyright © 2020-2023  润新知