SQLServer用存储过程实现插入更新数据示例

 更新时间:2014年08月18日 11:24:25   投稿:whsnow  
这篇文章主要介绍了SQLServer如何用存储过程实现插入更新数据,需要的朋友可以参考下

实现

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,更新成功

相关文章

  • SQL写法--行行比较

    SQL写法--行行比较

    行行比较是 SQL 规范,关系型数据库都应该支持这种写法,本文通过代码以及与其他写法进行比较来具体讲解这一规范,大家跟随小编一起来学习吧
    2021-08-08
  • SQL Server数据库命令整理大全

    SQL Server数据库命令整理大全

    刚开始学数据库,可能一下子记不住那么多的命令,或者命令太多,容易混淆,不知道如何选择最合适的那一条,所以我在这里整理好了一份经常会用到的一些,这篇文章主要给大家介绍了关于SQL Server数据库命令整理大全的相关资料,需要的朋友可以参考下
    2024-05-05
  • SQL语句实现查询SQL Server服务器名称和IP地址

    SQL语句实现查询SQL Server服务器名称和IP地址

    这篇文章主要介绍了SQL语句实现查询SQL Server服务器名称和IP地址,本文分别给出查询语句,需要的朋友可以参考下
    2015-07-07
  • SQL SERVER中关于exists 和 in的简单分析

    SQL SERVER中关于exists 和 in的简单分析

    这篇文章主要介绍了SQL SERVER中关于exists 和 in的简单分析,需要的朋友可以参考下
    2014-08-08
  • sqlserver设置主键的实现步骤

    sqlserver设置主键的实现步骤

    在SQLServer中,定义表的主键非常容易,本文主要介绍了sqlserver设置主键的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • SQL Server 2000中的触发器使用

    SQL Server 2000中的触发器使用

    触发器是数据库应用中的重用工具,它的应用很广泛。这几天写一个化学数据统计方面的软件,需要根据采样,自动计算方差,在这里,我使用了触发器。
    2009-09-09
  • 关于数据库优化问题收集汇总

    关于数据库优化问题收集汇总

    笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。以下就对数据库优化问题进行了介绍,需要的朋友可以参考下
    2013-07-07
  • Linq to SQL 插入数据时的一个问题

    Linq to SQL 插入数据时的一个问题

    今天用LinqtoSql插入数据,总是插入错误,说某个主键字段不能为空,我检查了半天感觉主键字段没有赋空值啊,实在是郁闷。 要插入数据的表结构是
    2009-08-08
  • SqlServer下通过XML拆分字符串的方法

    SqlServer下通过XML拆分字符串的方法

    SqlServer中通过XML拆分字符串,需要的朋友可以参考下。
    2010-06-06
  • SQLServer XML数据的五种基本操作

    SQLServer XML数据的五种基本操作

    SQLServer XML数据的五种基本操作语句
    2009-07-07

最新评论