使用 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)