[UDF系列]如何編寫InterBase UDF 之一

如何編寫InterBase UDF<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

(作者:Gregory Deatz - Hoagland, Longo, Moran, Dunst & Doukas)

warton

 

譯者敘:

由於InterBase性能方面表現突出,並且它是開源和跨平臺的,有很多使用Delphi,C++Builder的程序員開始採用它做爲其後數據庫平臺。但是InterBase的中文資料簡直太少了。昨日,一網友在CSDN上提到InterBaseUDF(user defined functions 用戶自定義函數),我順手一查,網上竟然查不到這方面的中文資料。於是,我今天將一篇如何編寫和使用InterBase UDF的文章翻譯給大家,希望使用Interbase,C++Builder,Delphi的朋友能喜歡!

-----warton 2003.01.21

   

什麼是UDF

 

    UDF—-( user defined functions)用戶定義函數,是InterBase中採用任何一種語言編寫(一般用C/C++,也可以用其它語言如pascal)並編譯成共享庫的函數。在windows平臺下,共享庫一般指動態鏈接庫(DLL)

 

爲什麼編寫UDF?

 

       畢竟存儲過程自身可以實現相當多的功能。那爲什麼還要用UDF呢?

       然而,事實是InterBase並沒有提供相當豐富的內置函數。一些普通的函數、字符串操作、日期操作等相關的函數據都沒有提供。

    於是這樣的事發生了,像Delphi,C這樣的編程語言可以提供執行速度特別快的模塊算法、日期變量處理、浮點數格式化、及字符中操作程序。

       編寫UDF是個狂簡單的任務,這可以說是從所周知了。然而,沒經驗的編寫者可能對編寫DLL/共享庫感覺太難和不安

 

使用Delphi編寫Windows平臺的UDF

      

首先啓動一個Delphi工程

    1.啓動車個delphi dll工程(一個特殊類型的工程,當你選擇“File”,“New)

爲你的函數生成一個新的單元

    2.選擇”File”,”New”…UNIT

       3.聰明的你最好現在保存所有文件把你的工程保存到一個你認爲合適的地方。

生成一個模塊程序

    4.在新生成的單元文件:

       5. 在接口段定義你的函數:

function Modulo(var i, j: Integer): Integer; cdecl; export;

6.實現這個函數:

function Modulo(var i, j: Integer): Integer;

begin

  if (j = 0) then

    result := -1 // just check the boundary condition, and

                 // return a reasonably uninteresting answer.

  else

    result := i mod j;

end;

 7.在新生成的工程源代碼中,直接將下面的代碼寫到”begin end.”之上:

Modulo;

8.現在編譯工程,你將得到一個可工作的動態鏈接庫。

9.現在,我必須做的是將這個DLL複製到InterBase可以找到的UDF目錄下,它可能是:

c:/Program Files/Borland/InterBase/UDF

10.如何使用UDF….按如下的操作。使用ISQL連接到一個己存在的新的數據庫

11.寫上如下的代碼:

12提交你的改變。

13.現在測試它

select f_Modulo(3, 2) from rdb$database

 

   這簡直太簡單了,不是嗎?

但是關於字符串和日期型怎麼處理呢?

   

       (由於時間問題,今天就翻譯到這,我還要編程序,不好意思J:),明天見!!)

發佈了35 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章