实现

1)有同样的数据,直接返回(返回值:0)。

2)有主键同样。可是数据不同的数据。进行更新处理(返回值:2);

3)没有数据,进行插入数据处理(返回值:1)。

【创建存储过程】

Create proc Insert_Update

@Id varchar(20),  
 
@Name varchar(20),  
 
@Telephone varchar(20),  
 
@Address varchar(20),

@Job varchar(20), 
 
@returnValue int output  
 
as  
 
declare  
 
@tmpName varchar(20),  
 
@tmpTelephone varchar(20),

@tmpJob varchar(20),
 
@tmpAddress varchar(20)
 
if exists(select * from dbo.DemoData where id=@Id)  
 
begin  
 
select @tmpName=Name,@tmpTelephone=Telephone,@tmpAddress=Address,@tmpJob=Job from dbo.DemoData where id=@Id  
 
if ((@tmpName=@Name) and (@tmpTelephone=@Telephone) and (@tmpAddress=@Address)and (@tmpJob=@Job))  
 
begin  
 
set @returnValue=0 --有同样的数据,直接返回值  
 
end  
 
else  
 
begin  
 
update dbo.DemoData set Name=@Name,Telephone=@Telephone,Address=@Address,Job=@Job where id=@Id  
 
set @returnValue=2 --有主键同样的数据,进行更新处理  
 
end  
 
end  
 
else  
 
begin  
 
insert into dbo.DemoData values(@Id,@Name,@Telephone,@Address,@Job)  
 
set @returnValue=1 --没有同样的数据,进行插入处理  
 
end

【运行方式】

declare @returnValue int   
exec Insert_Update '15','hugh15','3823345','长安街','副部长',@returnValue output  
select @returnValue

返回值0,已经存在同样的

返回值1,插入成功

返回值2,更新成功

转载于:https://www.cnblogs.com/ldxsuanfa/p/10053666.html

SQLServer用存储过程实现插入更新数据相关推荐

  1. kettle 插入更新 数据增量_kettle基于时间戳增量更新

    思路1: 1.提前建好ts时间表,设置两个字段分别为current_t和load_t,current用于比较原表中日期的上限,load_t则为上次加载的日期,几位原表中日期的下限. 1 create ...

  2. 向mysql表中插入/更新数据时自动添加创建时间/更新时间

    目录 处理方式一:修改数据库字段类型 测试插入数据: 测试更新数据: 处理方式二:配置生成策略 [MySQL版本] 8.x 处理方式一:修改数据库字段类型 自动添加创建时间: 将字段类型设置为TIME ...

  3. kettle 插入更新 数据增量_使用Kettle实现数据实时增量同步

    2018-09-28: 示例job已上传至github,地址见文末 0. 前言 本文介绍了使用Kettle对一张业务表数据(500万条数据以上)进行实时(10秒)同步,采用了时间戳增量回滚同步的方法. ...

  4. sqlserver 自增ID插入指定数据

    set identity_insert 表名 ON --允许对自增列Id插入指定数据 insert into table_name(Id,Name) values(1,'test') set iden ...

  5. 关于redo(二)插入更新数据时的效率比较

    继续昨天的问题.我曾经面对一个工作,要把一张很大的表中,3个月前的数据删掉,转储到历史表中.这将是一个很大的工程,需要在一周内完成,而且只能在夜里进行工作.这就需要考虑到性能问题了,考虑到网上很多人说 ...

  6. Navicat通过存储过程批量插入mysql数据

    场景 有时需要做测试,要向数据库中插入一些测试数据,成百上千条,这时候通过存储过程就可以做到. 实现 打开Navicat,找到上面函数,点击函数 点击新建函数 选择类型为过程 输入名字和参数 点击完成 ...

  7. mysql bulk update_使用SqlBulkCopy批量插入/更新数据

    usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem. ...

  8. plsql 存储过程 批量提交_Oracle 存储过程批量插入数据

    oracle 存储过程批量插入大量数据 declare numCount number; userName varchar2(512); email varchar2(512); markCommen ...

  9. sqlserver数据库同步更新数据到mysql数据库,利用ODBC

    项目要求SQLSERVER数据库增加数据的时候同步数据到mysql数据库. 这里用到了存储过程与触发器的混合使用. 因为要同步到MySQL数据库所以首先下载MySQL的ODBC驱动 ↓ https:/ ...

最新文章

  1. Ecshop与Jquery冲突的完美解决方案(实践过,有效)
  2. 三级火箭力助搜狗快速盈利
  3. Puppet SaltStack Chef Ansible
  4. redis服务器防止入侵,加ip,密码限制
  5. 码支付如何对接网站_支付宝当面付门店码如何做?
  6. StringBuilder的使用
  7. Spring 学习教程(一): 认识 Spring 框架
  8. Web框架——Flask系列之session机制(十六)
  9. bzoj1951 [Sdoi2010]古代猪文 lucas+CRT+exgcd
  10. 【干货】2021中国“企服企业”规模化获客体系建设指南.pdf(附下载链接)
  11. /var/lock/subsys作用
  12. labelme转VOC2007格式
  13. 【javascript-基础小练习】跟随鼠标移动的提示框
  14. android面试题之四(红黑联盟)
  15. 在北京租房 舒舍的租客素质怎么样?
  16. 三色球问题python_面试题-三色球问题
  17. 用JavaScript来对QUOTED-PRINTABLE进行解码和编码算法
  18. 《SAP HANA平台应用开发》—第2章2.1节熟悉HANA开发环境
  19. JavaWeb期末考试复习资料
  20. 第四天 hadoop HDFS上传下载原理

热门文章

  1. 【Tensorflow-Error】CUDA_ERROR_OUT_OF_MEMORY: out of memory
  2. 【Ubuntu-caffe-anaconda3】安装错误总结
  3. Eigen入门之密集矩阵 9 - 别名混乱Aliasing
  4. chrome v46渲染partial html内容的一个问题
  5. 【python 5】正则表达式
  6. cnn卷积神经网络应用_卷积神经网络(CNN):应用的核心概念
  7. linux usb filesystem
  8. AD制图相关问题总结
  9. python语言的编程模式_一种基于Python语言的EDA开发平台及其使用方法与流程
  10. Pygame 使用Djkstra广度搜索寻找迷宫(相对)最短路径