使用 TRIGGER sql 发送电子邮件的编译错误

Posted

技术标签:

【中文标题】使用 TRIGGER sql 发送电子邮件的编译错误【英文标题】:Compilation errors to send email with TRIGGER sql 【发布时间】:2016-10-14 14:09:41 【问题描述】:

您好,我正在使用 PL/SQL Developper,我遇到了一个烦人的错误……我正在尝试在“JDEF”数据库中添加某些内容时触发发送电子邮件。 这是我的代码:

CREATE OR REPLACE TRIGGER Send_Email
AFTER INSERT
ON JDEF
BEGIN 
        EXEC msdb.dbo.sp_send_dbmail
             @profile_name = 'me',
             @recipients = 'example@ent.com',
             @body = 'The stored procedure finished successfully.',
             @subject = 'Automated Success Message'
END

错误编译是针对这两行的:EXEC msdb.dbo.sp_send_dbmail AND @profile_name = 'me'。他们谈论“MSDB”和“,”符号被其他符号替换以进行编译。

你有什么想法可以帮助我吗?

谢谢

【问题讨论】:

该语法对 Oracle 无效。那是 T-SQL (Microsoft),但远非有效的 PL/SQL @a_horse_with_no_name 谢谢你的回答,你有什么替代方案可以提议吗? 如果用户创建ROLLBACK 会发生什么?在这种情况下,无论如何都会发送邮件! 【参考方案1】:

您的代码在 oracle 标准发送电子邮件的方式中看起来像 mssql,例如:

UTL_MAIL.send(sender => 'me@ent.com',
            recipients => 'example@ent.com',
               subject => 'Automated Success Message',
               message => 'The stored procedure finished successfully.',
             mime_type => 'text; charset=us-ascii');

但需要先启用它才能使用UTL_MAIL。另一个发送邮件的包是UTL_TCP 这可能会有所帮助:http://www.orafaq.com/wiki/Send_mail_from_PL/SQL

【讨论】:

以上是关于使用 TRIGGER sql 发送电子邮件的编译错误的主要内容,如果未能解决你的问题,请参考以下文章

SQL SERVER 通过作业来邮件发送SQL结果报错。 (错误 22050)

使用 YANDEX 的 SQL Server 2008 数据库邮件

PLSQL详解SQL中的trigger(触发器)

MySQL触发器 trigger学习

Zabbix使用SMTP发送邮件报警及定制邮件报警内容

jenkins构建项目报错发送邮件