2012-04-18 46 views
0

在我需要移植到C#的一些傳統Delphi代碼中,我遇到了在我看來相當奇怪的[e,o]「SQL語句」。這是一個僞裝成SQL語句的私有函數嗎?

問題TQuery組件具有的SQL屬性:

Begin 
    [email protected]('[email protected]', :SUB , :TEXT, '[email protected]'); 
    [email protected]('[email protected]', :SUB , :TEXT, '[email protected]'); 
End; 

通常情況下,SQL屬性是這樣的字符串:

Select * from Bakery where Item = 'Pie' 

..所以這已拋出我的諺語循環。這是「Oracle事物」還是什麼?

+0

這是調用數據庫函數的過程風格sql。 – Randy 2012-04-18 20:12:02

+0

是的。這是Oracle的一件事,特別是對'MAILUTIL'功能的調用,它很可能是與發送電子郵件相關的用戶定義函數集合(UDF由於硬編碼服務器名稱@LOPARD)。你會發現它在數據庫中的某處(不要回憶在哪裏,但)。這不是標準的SQL,但Oracle驅動程序知道它到底傳遞給數據庫的意義。 – 2012-04-18 20:13:01

+0

我認爲這是一個函數,但沒有找到蟾蜍在同名選項卡上的函數列表中的「MAILUTIL」。 – 2012-04-18 20:56:30

回答

-1

是的,oracle能夠在pl/sql中發送郵件,但我認爲這是一個不好的做法。嘗試將它移動到在rdbms之外使用該「查詢」或在該情況下調用外部腳本文件的任何編程語言。

原因:如果郵件進程因任何原因失敗,它可能會回滾整個事務,並且還有其他缺點。

+0

-1發送郵件並不涉及提交,至少不是當我這樣做時,所以沒有回滾。 – Ben 2012-04-18 20:31:54

+0

數據庫不會發送電子郵件,它們用於存儲數據並可能應用了一些業務邏輯。 – Hajo 2012-04-18 20:34:34

+0

這是一個非常糟糕的例子,有這個討論,但這是一個相當似是而非的論點。 C#,PHP和許多其他語言都不是用來發送電子郵件的。我低估了虛假信息。雖然我不同意你對電子郵件的評論,但這個觀點將會永遠持續下去...... – Ben 2012-04-18 20:37:28

4

這是一個PL/SQL塊(Oracle對SQL的程序擴展)。我的猜測是,在遠程數據庫LEOPARD中定義了一個包MAILUTIL,該包在程序包中定義了一個SEND_MAILTXT過程。 MAILUTIL也可以是模式名稱,SEND_MAILTXT是獨立程序,但似乎不太可能。