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语句
 

你可能感兴趣的:(SQL,Server)