表19-15は、この項で説明しているOCI参照(REF
)関数を示しています。
表19-15 REF関数
関数 | 用途 |
---|---|
1つの |
|
|
|
16進文字列を |
|
|
|
2つの |
|
|
|
|
用途
あるREF
を別のREFに割り当て、両方が同じオブジェクトを参照するようにします。
構文
sword OCIRefAssign ( OCIEnv *env, OCIError *err, const OCIRef *source, OCIRef **target );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。
関連項目:
「OCIEnvCreate()」、「OCIEnvNlsCreate()」および「OCIInitialize()」(非推奨)
OCIエラー・ハンドルです。エラーがある場合は、err
に記録され、OCI_ERROR
が戻されます。OCIErrorGet()をコールして診断情報を取得します。
コピー元のREF
です。
コピー先のREF
です。
コメント
source
REF
をtarget REF
にコピーし、両方が同じオブジェクトを参照するようにします。target
REF
ポインタがNULL
(*target
== NULL
)の場合、OCIRefAssign()
は、コピー操作を実行する前にOCIオブジェクト・キャッシュ内にtarget REF
用のメモリーを割り当てます。
用途
指定のREF
を消去またはNULL
にします。
構文
void OCIRefClear ( OCIEnv *env, OCIRef *ref );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。
関連項目:
「OCIEnvCreate()」、「OCIEnvNlsCreate()」および「OCIInitialize()」(非推奨)
消去するREF
です。
コメント
オブジェクトを指し示さないREF
は、NULL
REF
とみなされます。論理的には、NULL
のREF
は参照先がないREF
になります。
NULL
のREF
は依然として有効なSQL値であり、SQLのNULL
ではないことに注意してください。これは、表内のNOT
NULL
列または行属性用の有効な非NULL
定数REF値として使用できます。
REF
としてNULL
ポインタ値が渡されると、この関数による操作は実行されません。
用途
指定の16進文字列をREF
に変換します。
構文
sword OCIRefFromHex ( OCIEnv *env, OCIError *err, const OCISvcCtx *svc, const OraText *hex, ub4 length, OCIRef **ref );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。
関連項目:
「OCIEnvCreate()」、「OCIEnvNlsCreate()」および「OCIInitialize()」(非推奨)
OCIエラー・ハンドルです。エラーがある場合は、err
に記録され、OCI_ERROR
が戻されます。OCIErrorGet()をコールして診断情報を取得します。
OCIサービス・コンテキスト・ハンドルです(結果のREF
がこのサービス・コンテキストで初期化される場合)。
REF
に変換する16進テキスト文字列で、以前にOCIRefToHex()
によって出力されたものです。
16進文字列の長さです。
16進文字列が変換先となるREF
です。入力時に*ref
がNULL
の場合は、そのREF
用の領域がオブジェクト・キャッシュ内に割り当てられます。それ以外の場合は、指定のREF
によって占有されているメモリーが再利用されます。
コメント
この関数は、変換後のREF
の書式が正しいことを保証します。生成されたREF
で指し示されるオブジェクトが存在することは保証されません。
用途
REF
の16進表現のサイズを戻します。
構文
ub4 OCIRefHexSize ( OCIEnv *env, const OCIRef *ref );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。
関連項目:
「OCIEnvCreate()」、「OCIEnvNlsCreate()」および「OCIInitialize()」(非推奨)
16進表現のサイズがバイト単位で戻されるREF
です。
コメント
REF
の16進表現のために必要なバッファ・サイズをバイト単位で戻します。最低このサイズのバッファを、REFから16進への変換関数(OCIRefToHex())に渡す必要があります。
戻り値
REF
の16進表現のサイズです。
用途
2つのREF
を比較してそれらが同等であるかどうかを判断します。
構文
boolean OCIRefIsEqual ( OCIEnv *env, const OCIRef *x, const OCIRef *y );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。
関連項目:
「OCIEnvCreate()」、「OCIEnvNlsCreate()」および「OCIInitialize()」(非推奨)
比較するREF
です。
比較するREF
です。
コメント
2つのREF
は、オブジェクトの種類(永続または一時)に関係なく同じオブジェクトを参照している場合のみ同等になります。
注意:
この関数では、2つのNULL
のREF
は等価とみなされません。
戻り値
2つのREF
が同等な場合はTRUE
です。
2つのREF
が等しくない場合、x
がNULL
の場合、またはy
がNULL.
の場合はFALSE
です。
用途
REF
がNULL
かどうかをテストします。
構文
boolean OCIRefIsNull ( OCIEnv *env, const OCIRef *ref );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。
関連項目:
「OCIEnvCreate()」、「OCIEnvNlsCreate()」および「OCIInitialize()」(非推奨)
NULL
であるかどうかをテストするREF
です。
コメント
REF
は、次に該当する場合のみNULL
になります。
永続オブジェクトを参照するが、オブジェクトの識別子がNULL
である場合
一時オブジェクトを参照するが、現時点ではオブジェクトを指し示していない場合
注意:
指し示しているオブジェクトが存在しない場合、このREF
は参照先がないREFです。
戻り値
指定されたREF
がNULL
の場合はTRUE
を戻します。それ以外の場合はFALSE
を戻します。
用途
REF
を16進文字列に変換します。
構文
sword OCIRefToHex ( OCIEnv *env, OCIError *err, const OCIRef *ref, OraText *hex, ub4 *hex_length );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。
関連項目:
「OCIEnvCreate()」、「OCIEnvNlsCreate()」および「OCIInitialize()」(非推奨)
OCIエラー・ハンドルです。エラーがある場合は、err
に記録され、OCI_ERROR
が戻されます。OCIErrorGet()をコールして診断情報を取得します。
16進文字列に変換するREF
です。ref
がNULL
のREF
(つまり、OCIRefIsNull
(ref
) == TRUE
)の場合は、0 (ゼロ)のhex_length
値が戻されます。
結果の16進文字列を格納するのに十分なバッファです。文字列の内容は、コール元にとっては不透明になります。
入力ではhex
バッファのサイズを指定し、出力ではhex
で戻される16進文字列の実際のサイズを指定します。
コメント
指定されたREF
を16進文字列に変換し、その文字列の長さを戻します。変換された文字列は、コール元にとっては不透明になります。
戻り値
この関数は、指定されたバッファが変換後の文字列を保持できるだけの大きさがない場合はエラーを戻します。