SQLServer用存储过程实现插入更新数据
生活随笔
收集整理的這篇文章主要介紹了
SQLServer用存储过程实现插入更新数据
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
實現(xiàn)
1)有同樣的數(shù)據(jù),直接返回(返回值:0)。
2)有主鍵同樣。可是數(shù)據(jù)不同的數(shù)據(jù)。進行更新處理(返回值:2);
3)沒有數(shù)據(jù),進行插入數(shù)據(jù)處理(返回值:1)。
【創(chuàng)建存儲過程】
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 --有同樣的數(shù)據(jù),直接返回值 ?
?
end ?
?
else ?
?
begin ?
?
update dbo.DemoData set Name=@Name,Telephone=@Telephone,Address=@Address,Job=@Job where id=@Id ?
?
set @returnValue=2 --有主鍵同樣的數(shù)據(jù),進行更新處理 ?
?
end ?
?
end ?
?
else ?
?
begin ?
?
insert into dbo.DemoData values(@Id,@Name,@Telephone,@Address,@Job) ?
?
set @returnValue=1 --沒有同樣的數(shù)據(jù),進行插入處理 ?
?
end?
【運行方式】
declare @returnValue int ??
exec Insert_Update '15','hugh15','3823345','長安街','副部長',@returnValue output ?
select @returnValue
返回值0,已經(jīng)存在同樣的
返回值1,插入成功
返回值2,更新成功
轉(zhuǎn)載于:https://www.cnblogs.com/ldxsuanfa/p/10053666.html
總結(jié)
以上是生活随笔為你收集整理的SQLServer用存储过程实现插入更新数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: info.plist文件里面添加描述 -
- 下一篇: linux cmake编译源码,linu