Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
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
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.