Cのデータ型とマクロの定義
typedef struct VARBYTE { int length; /* length of string */ BYTE bytes[1]; /* bytes - size must be adjusted */ } VARBYTE; #define VARBYTE_M(len) struct { int length; BYTE bytes[len]; }
使用
VARBYTE構造体は、既存のVARBYTEを参照するために使用します。
VARBYTE_Mマクロは、特定の長さの独自のVARBYTEを定義するために使用します。例えば、長さ30のVARBYTEを定義するには、このマクロを次のように使用します。
VARBYTE_M(30) myvbstr;
関数の結果型が可変長BYTEデータの場合、結果引数はCREATE FUNCTION文のRETURNS句で定義されている最大値分のバイト フィールドを予約済みのVARBYTE構造体を内容とするデータ域へのポインタです。
UDF定義とC関数宣言の中でVARBYTEを使用する例を以下に示します。
SQL関数定義 | 対応するC関数宣言 |
---|---|
CREATE FUNCTION F1 ( A VARBYTE(30) ) RETURNS VARBYTE(12) ...; |
void f1( VARBYTE *a, VARBYTE *result, ... ) { ... } |