Content UDF は多重定義されます。 つまり、UDF の使用方法に応じて異なる形式を持ちます。 形式は次のとおりです。
形式 1: クライアント・バッファーまたはクライアント・ファイルにオブジェクトを取り出す。
Content( handle, /* object handle */ );
形式 2: クライアント・バッファーまたはクライアント・ファイルにオブジェクトのセグメントを取り出す。
Content( handle, /* object handle */ offset, /* offset where retrieval begins */ size /* number of bytes to retrieve */ );
形式 3: サーバー・ファイルにオブジェクトを取り出す。
Content( handle, /* object handle */ target_file, /* server file name */ overwrite /* 0=Do not overwrite target file if it exists */ /* 1=Overwrite target file */ );
さらに、画像オブジェクトの場合には、Content UDF は次の形式をとります。
形式 4: 形式変換をしてクライアント・バッファーまたはファイルに画像を取り出す。
Content( handle, /* object handle */ target format /* target format */ );
形式 5: 形式変換をしてオブジェクトをサーバー・ファイルに取り出す。
Content( handle, /* object handle */ target_file, /* server file name */ overwrite, /* 0=Do not overwrite target file if it exists */ /* 1=Overwrite target file */ target format /* target format */ );
形式 6: 形式変換および追加の変更をして、オブジェクトをクライアント・バッファーまたはファイルに取り出す。
Content( handle, /* object handle */ target format, /* target format */ conversion_options /* conversion options */ );
形式 7: 形式変換および追加の変更をして、オブジェクトをサーバー・ファイルに取り出す。
Content( handle, /* object handle */ target_file, /* server file name */ overwrite, /* 0=Do not overwrite target file if it exists */ /* 1=Overwrite target file */ target format, /* target format */ conversion_options /* conversion options */ );
たとえば、次のステートメントでは、画像を従業員表からサーバーのファイルへ取り出します。 (これは上の形式 3 に対応します。)
EXEC SQL SELECT CONTENT( /* retrieval UDF */ PICTURE, /* image handle */ '/employee/images/ajones.bmp', /* target file */ 1) /* overwrite target file */ FROM EMPLOYEE WHERE NAME = 'Anita Jones';
C アプリケーション・プログラムの次のステートメントでは、画像を従業員表からサーバーのファイルへ取り出します。 取り出しの際、画像の形式が変換されます。 (これは上の形式 5 に対応します。)
EXEC SQL BEGIN DECLARE SECTION; char hvImg_fname[255]; EXEC SQL END DECLARE SECTION; EXEC SQL SELECT CONTENT( /* retrieval UDF */ PICTURE, /* image handle */ '/employee/images/ajones.bmp', /* target file */ 1, /* overwrite target file */ 'GIF') /* target format */ INTO :hvImg_fname FROM EMPLOYEE WHERE NAME = 'Anita Jones';