Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


24.3.2.4 UDF の戻り値およびエラー処理

初期化関数は、エラーが発生しなかった場合は 0、およびそうでない場合は 1 を返します。エラーが発生した場合、xxx_init()message パラメータに NULL で終わるエラーメッセージを格納します。メッセージはクライアントに返されます。メッセージバッファーの長さは MYSQL_ERRMSG_SIZE 文字ですが、標準の端末画面の幅にメッセージが収まるように、メッセージを 80 文字未満に維持するようにしてください。

long long 関数および double 関数の場合、メイン関数 xxx() の戻り値は関数値です。文字列関数は結果へのポインタを返し、*length を戻り値の (バイト単位の) 長さに設定します。例:

memcpy(result, "result string", 13);
*length = 13;

MySQL は、result パラメータを使用してバッファーを xxx() 関数に渡します。このバッファーは 255 文字を保持するための十分な長さがあり、マルチバイト文字も保持できます。xxx() 関数はこのバッファーに結果を格納でき (結果が収まる場合)、その場合は戻り値にそのバッファーへのポインタを設定してください。関数が別のバッファーに結果を格納する場合は、そのバッファーへのポインタを返します。

文字列関数で提供されたバッファーを使用しない場合 (たとえば、255 文字より長い文字列を返す必要がある場合)、xxx_init() 関数または xxx() 関数で malloc() を使用して独自のバッファーの領域を割り当て、xxx_deinit() 関数でその領域を解放する必要があります。以降の xxx() の呼び出しで再利用できるように、割り当てられたメモリーを UDF_INIT 構造体の ptr スロットに格納できます。セクション24.3.2.1「単純な関数のための UDF の呼び出しシーケンス」を参照してください。

メイン関数で戻り値が NULL であることを示すには、*is_null1 に設定します。

*is_null = 1;

メイン関数でエラーを返すことを示すには、*error1 に設定します。

*error = 1;

xxx() がいずれかの行で *error1 を設定した場合、XXX() が呼び出されたステートメントによって処理される現在の行および後続の行の関数値は NULL です。(後続の行では xxx() は呼び出されません。)


User Comments
Sign Up Login You must be logged in to post a comment.