这是一个伪装成SQL语句的专有函数吗?

时间:2012-04-18 20:09:39

标签: sql oracle

在我需要移植到C#的一些遗留Delphi代码中,我发现在我看来是一个非常奇怪的[e,o]" SQL语句。"

有问题的TQuery组件的SQL属性为:

Begin
  MAILUTIL.SEND_MAILTXT@LEOPARD('rr@crk.com', :SUB , :TEXT, 'rr@crk.com');
  MAILUTIL.SEND_MAILTXT@LEOPARD('ba@rdlands.gov', :SUB , :TEXT, 'ba@rdlands.gov');
End;

通常,SQL属性是这样的字符串:

Select * from Bakery where Item = 'Pie'

..所以这引起了我众所周知的循环。这是" Oracle的事情"或者什么?

2 个答案:

答案 0 :(得分:4)

这是一个PL / SQL块(Oracle对SQL的过程扩展)。我的猜测是远程数据库MAILUTIL中定义了一个包LEOPARD,该包在包中定义了SEND_MAILTXT过程。 MAILUTIL也可以是架构名称,而SEND_MAILTXT也是一个独立的程序,但似乎不太可能。

答案 1 :(得分:-1)

是的,oracle能够在pl / sql中发送电子邮件,但我认为这是一种不好的做法。尝试将其移动到rdbms之外使用的任何编程语言,使用"查询"或者在那种情况下调用外部脚本文件。

原因:如果邮件进程因任何原因失败,它可能会回滚整个事务,还有其他缺点。