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,
... )
{ ... }
|