スケーラブルデータベースサーバ 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.