Database Firebird dibandingkan dengan MySQL memang kalah populer. Hal itu salah satunya mungkin fungsi-fungsi di Firebird sangat-sangat terbatas. Tapi dibalik keterbatasan itu Firebird punya keunggulan yaitu UDF-nya lebih mudah dibuat dibandingkan MySQL terutama bagi programmer pemula.
Buat project baru pilih shared DLL. Lalu buat fungsi seperti berikut:
- Return integer:
function tambah(a:PInteger; b:Pinteger):PInteger;
begin
result:=PInteger(a^+b^);
end;
- Return String
Jika fungsi anda return string anda harus mendeklarasikan external function ib_util_malloc terlebih dahulu setelah uses:
function ib_util_malloc(l: integer): pointer; cdecl; external 'ib_util.dll';
Kemudian buat fungsinya sebagai berikut:
function teststr(const x:PAnsiChar):PAnsiChar;cdecl;
var s:string;
begin
s:=string(x);
Result:=ib_util_malloc(Length(s)+1);
System.AnsiString.StrPCopy(Result,AnsiString(s)) ;
//tambahkan dahulu uses System.AnsiString di unit anda.
end;
Kalau sudah selesai, compile Delphi DLL anda lalu taruh di folder UDF Firebird. Lalu tinggal kita deklarasikan fungsi tersebutt:
DECLARE EXTERNAL FUNCTION TAMBAH
Integer, Integer
RETURNS Integer BY VALUE
ENTRY_POINT 'tambah'
MODULE_NAME 'your dll';
DECLARE EXTERNAL FUNCTION TESTSTR
CSTRING(255)
RETURNS CSTRING(255)
ENTRY_POINT 'teststr'
MODULE_NAME 'your dll';
Testing di firebird:
select tambah(5,2) from rdb$database;
select teststr('abcde') from rdb$database;
Buat project baru pilih shared DLL. Lalu buat fungsi seperti berikut:
- Return integer:
function tambah(a:PInteger; b:Pinteger):PInteger;
begin
result:=PInteger(a^+b^);
end;
- Return String
Jika fungsi anda return string anda harus mendeklarasikan external function ib_util_malloc terlebih dahulu setelah uses:
function ib_util_malloc(l: integer): pointer; cdecl; external 'ib_util.dll';
Kemudian buat fungsinya sebagai berikut:
function teststr(const x:PAnsiChar):PAnsiChar;cdecl;
var s:string;
begin
s:=string(x);
Result:=ib_util_malloc(Length(s)+1);
System.AnsiString.StrPCopy(Result,AnsiString(s)) ;
//tambahkan dahulu uses System.AnsiString di unit anda.
end;
Kalau sudah selesai, compile Delphi DLL anda lalu taruh di folder UDF Firebird. Lalu tinggal kita deklarasikan fungsi tersebutt:
DECLARE EXTERNAL FUNCTION TAMBAH
Integer, Integer
RETURNS Integer BY VALUE
ENTRY_POINT 'tambah'
MODULE_NAME 'your dll';
DECLARE EXTERNAL FUNCTION TESTSTR
CSTRING(255)
RETURNS CSTRING(255)
ENTRY_POINT 'teststr'
MODULE_NAME 'your dll';
Testing di firebird:
select tambah(5,2) from rdb$database;
select teststr('abcde') from rdb$database;
Komentar
Posting Komentar
Beri komentar terbaik. Komentar yang ala kadarnya tidak akan saya tampilkan.