【发布时间】:2016-02-25 17:15:20
【问题描述】:
我正在尝试创建一个通知系统,当我们的 ERP 数据库中的某些设置不正确时会提醒我。我有一份报告,我必须每天手动运行以检查是否有任何需要修复的地方。我不想这样做,而是希望通过电子邮件将报告发送给我或向我发送某种通知。
有人提出以下建议:
在 SSRS 中创建报告(完成;如果报告没有任何数据,则无需修复,如果有数据,我需要修复一些东西)
创建一个存储过程,如果没有数据会引发错误
- SSRS 报告将使用存储过程数据集
- 订阅报告,只有在数据存在时才会发送电子邮件
我在存储过程的第二部分卡住了,这是我的代码:
CREATE PROCEDURE JOBNOMATS
AS
SELECT CASE
WHEN (SELECT "JobHead"."JobNum", "JobHead"."Company", "JobHead"."PartDescription", "JobHead"."ReqDueDate", "JobMtl"."PartNum", "JobMtl"."MtlSeq", "JobHead"."InCopyList", "JobHead"."Plant"
FROM {oj "Epicor10Live"."Erp"."JobHead" "JobHead" LEFT OUTER JOIN "Epicor10Live"."Erp"."JobMtl" "JobMtl" ON ("JobHead"."Company"="JobMtl"."Company") AND ("JobHead"."JobNum"="JobMtl"."JobNum")}
WHERE "JobHead"."Company"='011' AND "JobMtl"."PartNum" IS NULL AND NOT ("JobHead"."JobNum"='95057' OR "JobHead"."JobNum"='AISMNJOB')) IS NULL
THEN RAISERROR(50001,16,1)
ELSE SELECT "JobHead"."JobNum", "JobHead"."Company", "JobHead"."PartDescription", "JobHead"."ReqDueDate", "JobMtl"."PartNum", "JobMtl"."MtlSeq", "JobHead"."InCopyList", "JobHead"."Plant"
FROM {oj "Epicor10Live"."Erp"."JobHead" "JobHead" LEFT OUTER JOIN "Epicor10Live"."Erp"."JobMtl" "JobMtl" ON ("JobHead"."Company"="JobMtl"."Company") AND ("JobHead"."JobNum"="JobMtl"."JobNum")}
WHERE "JobHead"."Company"='011' AND "JobMtl"."PartNum" IS NULL AND NOT ("JobHead"."JobNum"='95057' OR "JobHead"."JobNum"='AISMNJOB')
但是我得到了这两个错误:
消息 156,级别 15,状态 1,过程 JOBNOMATS,第 7 行不正确 关键字“RAISERROR”附近的语法。
消息 156,级别 15,状态 1,过程 JOBNOMATS,第 9 行不正确 关键字“ELSE”附近的语法。
【问题讨论】:
-
对于初学者,您的
SELECT CASE需要和END -
@RickS 谢谢 - 我应该只添加一个 END 还是在每次评估之后添加?
标签: sql-server stored-procedures reporting-services