Firebirdの簡単なUDFをC++Builder XEで作成してみました。
■DLLの作成
DLLを作成します。
C++Builderのメニューから「ファイル」→「新規作成」→「その他」を選択します。
今回は簡単な関数を作成するので、C言語を使い、オプションは指定しません。
INTEGERを2つ受け取り、足し算の結果を返す関数を作成します。
__declspec(dllexport) int sample_add(int *X, int *Y) {
return *X + *Y;
}
プロジェクトをコンパイルして、DLLを作成します。
■UDFの登録
作成したDLLの配置場所は、「firebird.conf」の「UdfAccess」で設定します。
今回は特に編集をせず、Firebirdをインストールしたフォルダーにある「UDF」フォルダーにコピーします。
Firebirdに接続して、UDFを登録するデータベースに次のSQLを発行します。
DECLARE EXTERNAL FUNCTION sample_add
INTEGER,INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT 'sample_add' MODULE_NAME 'Project1';
ちゃんと登録できたことを確認します。
select sample_add(2,3) from rdb$database;
実行結果
SAMPLE_ADD |
---|
5 |
ちゃんと動作しました。
Pingback: FirebirdのUDFを作成してみた (2)UDFの引数で文字列を受け取る « 山本隆の開発日誌