【问题标题】:SQL scheduled jobs Failed NotificationSQL 计划作业失败通知
【发布时间】:2015-06-03 06:25:57
【问题描述】:

我需要想法或方法来检查我的计划作业是否有效并插入正确的数据。我有一个调用存储过程的函数来计算从今天开始插入的数据并插入到特定字段中。

喜欢这个

SET @male = (select count(idUser) from (select idUser from #tmpLog2 where sex = 1 AND CAST(catchTime as date) = @DATE group by idUser)u);
SET @female = (select count(idUser) from (select idUser from #tmpLog2 where sex = 0 AND CAST(catchTime as date) = @DATE group by idUser)u);

INSERT INTO CatchLog
(
    [male],
    [female]
)
VALUES
(
    @male,
    @female
)

存储过程工作正常,但有时今天有很多数据,结果插入 0 表示男性/女性。 当今天数据真的没有男/女时,可能会插入0个数据。

但有时它插入 0 但有男性 n 女性数据。任何人都可以帮我检查一下,如果插入的数据不正确,如何检查插入的数据是否正确并给出一些报告或插入错误日志?

对不起我的英语不好

【问题讨论】:

  • 您的“@DATE”变量类型是日期吗?
  • 是的,它有助于过滤今天的数据
  • 请添加表定义和示例数据!如何计算表#tmpLog2?可能是在插入#tmpLog2 时缺少数据吗?
  • #tmpLog2 只是一些日志表,只是名字,时间日志,男性/女性.. tmpLog 插入完美,

标签: sql-server stored-procedures


【解决方案1】:

我不知道您在 Count() 函数中使用了哪一列。但是,如果您在其中使用 Nullable 列,那么即使将记录添加为列值,它也可能给出 0。

考虑在 count() 参数中使用主键列或非 Nullable 列。

【讨论】:

  • 这就是重点,我需要今天记录的男性和女性总数,还有另一种不使用计数的方法吗?
  • 您可以在列中添加“Not Null”约束。如果它不妨碍您的数据库结构,那么我建议通过将其设置为 NOT NULL 来实现它。通过这种方式,您不需要任何其他解决方法。
猜你喜欢
  • 2017-06-07
  • 2010-12-10
  • 2021-08-08
  • 1970-01-01
  • 2018-02-14
  • 2020-01-31
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多