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

本文介绍了一种SQL存储过程的实现方式,该过程用于基于特定条件更新或插入历史能耗数据记录。具体而言,该存储过程检查指定日期下是否已存在对应设备ID和端口ID的记录,若存在则更新其能耗值,否则创建新记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值