当新作业添加到数据库时,我有一个由 SQL Server 创建的日期时间
。作业添加到数据库后 3 小时且尚未完成,应更改具有唯一作业 ID 的作业的日志级别和状态。
这就是我到目前为止所拥有的。 (不检查状态)
use DistributedComputing
if exists (select * from sys.objects where type = 'P' and name = 'proc_dc_timeout')
drop procedure proc_dc_timeout
go
create procedure proc_dc_timeout
AS
declare @JobID int
begin
if exists (select StartDate from Job where JobID = @JobID and DATEDIFF(hh,StartDate,GETDATE()) > 3 )
update Job
set LogLevel = 1, Status = 'error'
end
go
execute proc_dc_timeout
但是如果我运行查询,则不会影响任何行。请帮忙
最佳答案
您的变量@JobID
已声明,但未设置 - 因此 - 您的IF
语句永远不会成功,因为任何与NULL值的比较都将返回false。您需要将值分配给变量,或者使用 IS NULL
比较
关于sql-server - 日期时间比较更新两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9296370/