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

  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. UPDATE Tb_Product
  38. SET UpdateTime=GETDATE(),
  39. ProductName= CASE WHEN @ProductName IS NULL THEN Tb_Product.ProductName ELSE @ProductName END ,
  40. ProductType= CASE WHEN @ProductType=0 THEN Tb_Product.ProductType ELSE @ProductType END ,
  41. RecommendIndex = CASE WHEN @RecommendIndex =0 THEN Tb_Product.RecommendIndex ELSE @ProductType END ,
  42. Issuer= CASE WHEN @Issuer IS NULL THEN Tb_Product.Issuer ELSE @Issuer END ,
  43. Period= CASE WHEN @Period=0 THEN Tb_Product.Period ELSE @Period END ,
  44. Movement= CASE WHEN @Movement IS NULL THEN Tb_Product.Movement ELSE @Movement END ,
  45. InvestmentDirection= CASE WHEN @InvestmentDirection=7 THEN Tb_Product.InvestmentDirection ELSE @InvestmentDirection END ,
  46. YieldsFixed= CASE WHEN @YieldsFixed=0 THEN Tb_Product.YieldsFixed ELSE @YieldsFixed END ,
  47. YieldsFloat= CASE WHEN @YieldsFloat=0 THEN Tb_Product.YieldsFloat ELSE @YieldsFloat END ,
  48. YieldsType= CASE WHEN @YieldsType=0 THEN Tb_Product.YieldsType ELSE @YieldsType END ,
  49. Amount= CASE WHEN @Amount=0 THEN Tb_Product.Amount ELSE @Amount END
  50. WHERE ProductID = @ProductID
  51.  
  52. END

SQL动态更新表字段 传入字段可能为空的更多相关文章

  1. SQL比较两表字段和字段类型

    一.问题 业务需要把TB_Delete_KYSubProject表数据恢复到TB_KYSubProject,但提示错误,错误原因是两表字段类型存在不一致 insert into [TB_KYSubPr ...

  2. sql server 删除表字段和字段的约束

    删除数据库表中的字段时,使用了 :alter table 表名 drop column 列名 服务器返回的错误为:Server: Msg 5074, Level 16, State 1, Line 1 ...

  3. mysql中修改表字段名/字段长度/字段类型详解

    在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...

  4. mysql - 查看表字段和字段描述

    1.mysql查看表字段和字段描述 SELECT column_name, column_comment FROM information_schema.columns WHERE table_sch ...

  5. 【Navicat】获取表结构的DDL语句以及获取更新表字段的操作的DDL

    1.获取表结构的DDL语句 2.获取修改表结构某一字段的DDL语句  设计表-修改表字段(记住不要保存)-SQL预览

  6. Oracle更新表字段时内容中含有特殊字符&的解决方法

    今天在做 Oracle表字段更新时出现了特殊字符&,导致无法更新. 这个问题是第二次碰到了,所以在此记录下,以备后用. 举例: update t set col1='A&B' wher ...

  7. SQL语句修改表字段名/修改字段长度/增加字段/删除字段

    修改字段名Exec sp_rename 'zxchem_Suggest.End_Date','Yj_Finish_Date','Column' 修改字段长度Alter Table zxchem_Sug ...

  8. 使用SQL查看表字段和字段说明

    MySql: show full columns from tableName; Sql server: SELECT A.name AS table_name, B.name AS column_n ...

  9. SQL把a表字段数据存到b表字段 update,,insert

    update SYS_Navigation set SYS_Navigation.PARENT_XH = SYS_Power_menu.parent_id,SYS_Navigation.web_tit ...

随机推荐

  1. linux云计算集群架构学习笔记:用户管理和root用户密码重置

    RHEL7用户管理 本节所讲内容: 用户和组的相关配置文件 管理用户和组 RHEL7破解root密码 与windows 相比 LINUX中的用户和账号的作用是一样的. 都是基于用户对访问的资源做控制, ...

  2. makefile中使用变量

    makefile里的变量就像一个变量,变量的作用主要如下: (1)保存文件名列表. (2)保存编译器的参数. makefile中的变量是用一个字符串在makefile中定义的,这个文本串就是变量的值. ...

  3. http keepalive

    转载自: http://www.92csz.com/17/1152.html http keepalive 在http早期 ,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就 ...

  4. Commons Configuration2 - Quick start guide

    原文:http://commons.apache.org/proper/commons-configuration/userguide/quick_start.html Reading a prope ...

  5. Jersey(1.19.1) - Client API, Ease of use and reusing JAX-RS artifacts

    Since a resource is represented as a Java type it makes it easy to configure, pass around and inject ...

  6. Git CMD - merge: Join two or more development histories together

    命令格式 git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] [-s <strategy>] [-X <st ...

  7. oracle数据库创建表空间和表临时空间

    1:创建临时表空间 create temporary tablespace user_temp tempfile 'Q:\oracle\product\10.2.0\oradata\Test\xyrj ...

  8. Win7显示隐藏文件,隐藏文件夹怎么显示?如何查看?

    隐藏文件技术是木马病毒传播最惯用的手法之一,它们利用大部分网友对基础操作的不熟悉特点,逃过用户的发现和检查,显示隐藏文件的标准设置方法大家都会使用,一旦隐藏问题与病毒木马结合起来,比如典型的autor ...

  9. 解决TextView在显示文字的时候,一行还没显示满就跳到下一行

    转载请注明:转自 http://blog.csdn.NET/u011176685/article/details/48295185 一.问题描述: Android的TextView在显示文字的时候,如 ...

  10. get方法与post方法的使用

    使用get方法获取页面的form内容 新建一个getform.html <html> <head> <title>Using Http Get Method< ...