スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
実数から小数部を取得する外部C関数の例を次に示します。
/* ALL RIGHTS RESERVED,COPYRIGHT (C)2007,HITACHI,LTD. */ /* LICENSED MATERIAL OF HITACHI,LTD. */ /************************************************************************/ /* name = HiRDB 08-03 Cストアドファンクション サンプルプログラム 1 */ /************************************************************************/ #include <math.h> #include <stdio.h> /*---------------------------------------------------------------------*/ /* VARCHAR形式のデータを受け取るための構造体を定義する */ /*---------------------------------------------------------------------*/ typedef struct varchar{ short len; char str[80]; }VCH; /************************************************************************/ /* name = サンプル1 */ /************************************************************************/ void func_modf(double *value, double *ret, short *ind1, short *ind_ret, char *sqlstate, VCH *routine_name, VCH *specific_name, VCH *message_text ) { double int_value; /* modf関数を呼出して得られた小数部を戻り値に設定 */ *ret = modf(*value, &int_value); /* 戻り値の標識部を設定(非ナル) */ *ind_ret = 0; /* SQLSTATEを設定(正常終了) */ memcpy(sqlstate, "00000", 5); /* メッセージテキストに空文字列を設定 */ message_text->len = sprintf(message_text->str, ""); } |
上記のC関数本体を使用して,Cストアドファンクションを定義,実行する例を次に示します。
cc +z -c sample1.c |
ld -b -o sample1.sl sample1.o |
INSTALL CLIB 'sample1.sl' ; |
CREATE function func_modf( parm1 FLOAT ) RETURNS FLOAT LANGUAGE C EXTERNAL NAME 'sample1.sl!func_modf' PARAMETER STYLE RDSQL; |
select func_modf(double_value) from t1 |
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.