SQL Server transaction+在sql执行中进行条件判断

USE [IPPower]
GO
/****** Object:  StoredProcedure [dbo].[proc_AddHistoricalConsumption]    Script Date: 2019/7/17 14:19:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[proc_AddHistoricalConsumption]
@PowerDeviceID int,        --设备ID
@PowerPortID int,          --端口ID
@DayJoule float        --设备ID
as
begin transaction

declare @isExit int
declare @olddayJoule float 

select @isExit = count(ID) from P_HistoricalConsumption where PowerDeviceID = @PowerDeviceID and PowerPortID = @PowerPortID and DayTime = CONVERT(varchar(100), GETDATE(), 23)

if @isExit <> 0 

begin
select @olddayJoule = DayJoule from P_HistoricalConsumption where PowerDeviceID = @PowerDeviceID and PowerPortID = @PowerPortID and DayTime = CONVERT(varchar(100), GETDATE(), 23)
update P_HistoricalConsumption set DayJoule= (@olddayJoule + @DayJoule), ModifyDate = GETDATE() where PowerDeviceID = @PowerDeviceID and PowerPortID = @PowerPortID and DayTime = CONVERT(varchar(100), GETDATE(), 23) 
end 

else

begin 
insert into P_HistoricalConsumption (PowerDeviceID,PowerPortID,DayJoule,Year,Month,Day,DayTime,DeleteMark,CreateDate) values (@PowerDeviceID,@PowerPortID,@DayJoule,datename(year,GETDATE()),datename(Month,GETDATE()),datename(day,GETDATE()),GETDATE(),0, GETDATE()) 
end

commit transaction 

 

 

begin transaction

declare @parameter  type 

select @parameter  = count(*) from table_name where A = ' '

if @parameter1 <> 0

begin

执行sql

end

else

begin

执行sql

end

commit transaction

例:

begin transaction

declare @isExit int

select @isExit = count(*) from person where userId = ' 10086'

if @isExit <> 0 

begin

update person set lastUpdateDate = getdate()

end 

else

begin

insert into person ( userId, lastUpdateDate ) values ('10086', getdate() )

end

commit transaction

查询person表中是否存在userId为‘10086’的记录,如果存在,执行update语句,否则,执行insert语句
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值