欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-27 23:50:10
实现 1)有相同的数据,直接返回(返回值:0); 2)有主键相同,但是数据不同的数据,进行更新处理(返回值:2); 3)没有数据,进行插入数据处理(返回值:1)。...

实现

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