B UTL_RAWパッケージ
Oracle Visual Workbenchを使用して、ゲートウェイを介してWebSphere MQにアクセスするアプリケーションを開発します。 Oracle Visual Workbenchは、Oracle WebSphere MQにアクセスするインタフェースを定義し、OracleアプリケーションがゲートウェイとインタフェースするためのPL/SQLコード(MIP)を自動的に生成します。 Oracle Visual Workbenchの詳細は、「Oracle Procedural Gateway Visual Workbench for WebSphere MQインストレーションおよびユーザーズ・ガイドfor Microsoft Windows (32-bit)」を参照してください。
メッセージのデータ型
WebSphere MQキューに送信またはWebSphere MQキューから取得するメッセージは、MIPプロシージャにより定義されないデータとして転送されます。
データ・プロファイルがMIPで定義されると、MIPはメッセージ・データをOracleデータ型から受信側アプリケーションが理解できるターゲット・データ型に変換します。 メッセージ・データは、WebSphere MQキューに送信される前に、RAW
データ型のバッファに圧縮されます。 同様の変換プロセスが、メッセージの受信時に適用されます。 MIPはメッセージをバッファから解凍し、指定されたOracleデータ型に変換します。
MIPは、UTL_RAW
パッケージのファンクションを使用して、メッセージ・データ変換を実行します。 UTL_RAW
パッケージは、RAW
データ型およびPL/SQLデータ型を使用して、WebSphere MQキューを介して前後に送信されるメッセージ・データを変換およびパッキングするための手順を含むPL/SQLパッケージです。
必要に応じ、UTL_RAW
ファンクションを使用して、生成済MIPのメッセージ・データ変換を拡張できます。 データ・プロファイルがMIPで定義されていない場合、UTL_RAW
ファンクションを使用する独自の変換プロシージャを作成し、メッセージの送信およびメッセージの受信直後に、これらの機能をコールできます。
UTL_RAW
パッケージは、ゲートウェイに含まれません。 これは、各Oracleデータベースとともに出荷されます。 UTL_RAW
パッケージの詳細は、使用するOracle DBAを参照してください。
UTL_RAW関数
このトピックでは、UTL_RAW
関数について説明します。
UTL_RAW.function(arg1, arg2, ...)
ファンクション名、引数、そのOracleデータ型および戻り値データ型は、各ファンクションの説明とともにこの付録で説明されます。 それぞれの説明で、ファンクションは、次の変数に置かれる結果のファンクション値を示すPL/SQL構文とともに説明されます。
result := UTL_RAW.function(arg1, arg2, ...);
ただし、ファンクションは、PL/SQL式内のコンポーネントとしても使用できます。 たとえば、ファンクションは、2つの文字列、Helloおよびworld!を対象に、UTL_RAW
.CAST_TO_RAW
を使用してそれらをRAWメッセージ・データに変換してからUTL_RAW
.CONCAT
と連結させ、ゲートウェイを使用してWebSphere MQキューに送信します。 同一のメッセージがキューから取得されてからUTL_RAW.CAST_TO_VARCHAR2
で文字データ型に変換され、表示されます。
UTL_RAW.TO_RAW
PGM_UTL.TO_RAW
は、PGM.MQOD
、PGM.MQMD
、PGM.MQPMO
およびPGM.MQGMO
オブジェクトの値をRAW値に変換します。
構文
result := PGM_UTL.TO_RAW(input
);
説明:
-
resultは、ファンクションの出力値を保持する変数です。 これは、データ型RAWです。
-
inputは、ロー・データに変換される
PGM
.MQOD
、PGM
.MQMD
、PGM
.MQPMO
またはPGM
.MQGMO
データ型オブジェクトの入力値です。
UTL_RAW.BIT_AND
UTL_RAW.BIT_AND
は、2つの生の値に対してビット単位の論理AND
操作を実行します。 値の長さが異なる場合、2つの値の短い方の最終バイトの後でAND
操作は終了します。 長い値の未処理の部分は、最終結果を得るために部分結果に追加されます。 結果値の長さは、2つの入力値の長い方と同等です。
構文
result := UTL_RAW.BIT_AND(input1, input2);
説明:
-
resultは、ファンクションの出力値を保持する変数です。 これは、データ型RAWです。
input1
またはinput2
がnullの場合、値はNULLです。 -
input1は、
input2
を使用するBIT_AND
へのデータ型RAW
の入力値です。 -
input2は、
input1
を使用するBIT_AND
のデータ型RAW
の入力値です。
UTL_RAW.BIT_OR
UTL_RAW.BIT_OR
は、2つの生の値のビット単位の論理OR
操作を実行します。 値の長さが異なる場合、2つの値の短い方の最終バイトの後でOR
操作は終了します。 長い値の未処理の部分は、最終結果を得るために部分結果に追加されます。 結果値の長さは、2つの入力値の長い方と同等です。
構文
result := UTL_RAW.BIT_OR(input1, input2);
説明:
-
result
は、ファンクションの出力値を保持する変数です。 これは、データ型RAW
です。input1
またはinput2
がnullの場合、値はNULLです。 -
input1
は、RAW
データ型のBIT_OR
へのinput2
の入力値です。 -
input2
は、RAW
データ型のBIT_OR
へのinput1
の入力値です。
UTL_RAW.BIT_XOR
UTL_RAW
.BIT_XOR
は、RAW値のビット単位の論理EXCLUSIVE
OR
操作を実行します。 値の長さが異なる場合、2つの値の短い方の最終バイトの後でEXCLUSIVE
OR
操作は終了します。 長い値の未処理の部分は、最終結果を得るために部分結果に追加されます。 結果値の長さは、2つの入力値の長い方と同等です。
構文
result := UTL_RAW.BIT_XOR(input1, input2);
説明:
-
result
は、ファンクションの出力値を保持する変数です。 これは、データ型RAW
です。input1
またはinput2
がnullの場合、値はNULLです。 -
input1
は、EXCLUSIVE
OR
とinput2
のRAW
データ型の入力値です。 -
input2
は、EXCLUSIVE
OR
とinput1
のRAW
データ型の入力値です。
UTL_RAW.CAST_TO_VARCHAR2
UTL_RAW
。CAST_TO_VARCHAR2
は、生の値を同じデータ・バイト数のデータ型VARCHAR2
の値に変換します。 結果は、文字ではなく、シングルバイト8ビットの構成として処理されます。 マルチバイト・キャラクタ境界は無視されます。 データは、データ型VARCHAR2
に変化するのみで、まったく変更されません。
構文
result := UTL_RAW.CAST_TO_VARCHAR2(input);
説明:
-
result
は、ファンクションの出力値を保持する変数です。 これは、データ型VARCHAR2
です。input
がnullの場合、値はnullです。 -
input
は、データ型VARCHAR2
に変換するRAW
データ型の入力値です。
UTL_RAW.COMPARE
UTL_RAW
.COMPARE
は、1つのRAW値を別のRAW値と比較します。 同一の場合、UTL_RAW
.COMPARE
は0を戻します。 同一ではない場合、COMPARE
は、一致しない最初のバイトの位置を戻します。 入力値の長さが異なる場合、指定する値により短い方の入力値が右側に埋め込まれます。
構文
result := UTL_RAW.COMPARE(input1, input2[, pad]);
説明:
-
result
は、ファンクションの出力値を保持する変数です。 これは、データ型NUMBER
です。input1
とinput2
の値がnullまたは同一の場合、または最初の不一致バイトの位置が1から番号付けされている場合は、値0が返されます。 -
input1
は、RAW
データ型が比較する最初の入力値です。 -
input2
は、比較するRAW
データ型の2番目の入力値です。 -
pad
は、短い方の入力値を埋め込むために使用するシングルバイト値です。 デフォルトは、X'00'です。
UTL_RAW.CONCAT
UTL_RAW
.CONCAT
は、最大12個のRAW値のセットを単一のRAW値に転結します。 値は、左から右へパラメータ・リストに表示される順序で、まとめて追加されます。 NULL入力値はスキップされ、連結は次のNULLではない値で操作を継続します。
入力値の長さの合計が、32767バイトを超える場合、VALUE_ERROR
例外が発生します。
構文
result := UTL_RAW.CONCAT(input1, ... input12);
説明:
-
result
は、ファンクションの出力値を保持する変数です。 これは、データ型RAW
です。 -
input1
...
input12
は、連結するRAW
データ型の入力値です。
UTL_RAW.CONVERT
UTL_RAW
.CONVERT
は、RAW値を別のキャラクタ・セットに変換します。次のいずれかの条件で、A
VALUE_ERROR
例外が発生します。
-
入力値が、NULLであるまたは長さが0である。
-
指定されたキャラクタ・セットの1つまたは両方が、欠落している、NULLであるまたは長さが0である。
-
キャラクタ・セット名が無効であるまたはOracleデータベースでサポートされていない。
構文
result := UTL_RAW.CONVERT(input,new_charset
,old_charset
);
説明:
-
result
は、ファンクションの出力値を保持する変数です。 これは、RAW
データ型です。 -
input
は、変換するRAW
データ型の入力値です。 -
new_charset
は、input
をに変換するグローバリゼーション・サポート文字セットです。 -
old_charset
は、inputが現在使用しているグローバリゼーション・サポート・キャラクタ・セットです。
UTL_RAW.COPIES
UTL_RAW
.COPIES
は、1つ以上の値のコピーを戻します。 値は、まとめて連結されます。 次のいずれかの条件で、A
VALUE_ERROR
例外が発生します。
-
入力値が、NULLであるか長さが0である。
-
コピー数に負の数が指定される。
-
結果の長さが、32767バイトを超えている。
構文
result := UTL_RAW.COPIES(input, number);
説明:
-
result
は、ファンクションの出力値を保持する変数です。 これは、RAW
データ型です。 -
input
は、コピーするRAW
データ型の値です。 -
number
は、入力をコピーする回数です。 これは、正の数である必要があります。
UTL_RAW.OVERLAY
UTL_RAW
.OVERLAY
は、RAW値の一部をRAWデータの新しい文字列に置換します。 新規データがオーバーレイ領域の長さより短い場合、十分な長さにするために新規データは埋め込まれます。 新規データがオーバーレイ領域より長い場合、余分なバイトは無視されます。 入力値を超えるオーバーレイ領域を指定すると、指定された長さに従い、入力値が拡張されます。 入力値の長さを超えるオーバーレイ領域の開始位置を指定すると、入力値が指定された位置に埋め込まれ、入力値が新規データで拡張されます。
次のいずれかの条件で、A
VALUE_ERROR
例外が発生します。
-
入力値のオーバーレイに使用される新規データが、NULLであるまたは長さが0である。
-
オーバーレイする入力値の位置が定義されていない。
-
オーバーレイする部分の長さが、32767バイトを超えている。
-
オーバーレイするバイト数が、0より小さく定義される。
-
オーバーレイ操作を開始する入力値内の位置の定義が、1より小さい。
構文
result := UTL_RAW.OVERLAY(new_bytes
, input, position, length, pad);
説明:
-
result
は、ファンクションの出力値を保持する変数です。 これは、RAW
データ型です。 -
new_bytes
は、入力をオーバーレイする新しい値で、RAW
データ型のバイト文字列です。 バイトはnew_bytes
から最も左のバイトから選択されます。 -
input
は、オーバーレイするデータ型RAW
の入力値です。 -
position
は、1から番号付けられたオーバーレイを開始する入力内の位置です。 この値は、0より大きい必要があります。 デフォルトは1です。 -
length
は、オーバーレイをするバイト数です。 この値は、0より大きいか等しい必要があります。 デフォルトはnew_bytes
の長さです。 -
pad
は、長さがオーバーレイの長さを超えるとき、または位置がinput
の長さを超えるときにパッドするために使用される1バイト値です。 デフォルトは、X'00'です。
UTL_RAW.SUBSTR
UTL_RAW
.SUBSTR
は、RAW値からバイトを削除します。 削除するバイトの開始位置として正の数を指定する場合、SUBSTR
は、最初のバイトを探して入力値の始めからカウントします。 負の数を指定すると、UTL_RAW
.SUBSTR
は、最初のバイトを探して入力値の終わりから逆向きにカウントします。
次のいずれかの条件で、A
VALUE_ERROR
例外が発生します。
-
削除を開始する位置が、0で指定される。
-
削除するバイト数が、0より小さく指定される。
構文
result := UTL_RAW.SUBSTR(input, position[,length]);
説明:
-
result
は、ファンクションの出力値を保持する変数です。 これは、RAW
データ型です。 値は、input
の指定された1バイト以上です。input
がnullの場合、値はヌル値になります。 -
input
は、バイトの一部を抽出するRAW
データ型の入力値です。 -
position
は、抽出を開始するバイト位置です。 この値は、0にはできません。position
の値が負の場合、SUBSTR
は入力の最後から逆方向に数えます。 -
length
は、position
の後にinput
から抽出するバイト数です。 この値は、0より大きい必要があります。 指定されない場合、入力の終わりのすべてのバイトが戻されます。
UTL_RAW.TRANSLATE
UTL_RAW
.TRANSLATE
は、指定するスキーマに従い、RAW値内のいくつかのバイトの値を変更します。 入力値内のバイトが一致する文字列と比較され、一致する場合、置換文字列内の同じ位置のバイトが結果にコピーされます。 オフセットが置換文字列の長さを超える場合、これは結果から省略されます。 一致する文字列に表示されない入力値のバイトは、結果値にコピーされます。 一致する文字列内の左端の発生のみが使用され、後続の重複する発生は無視されます。
一致する文字列に含まれるバイトが、置換文字列より多い場合、一致する文字列の終わりの余分なバイトには置換文字列内に対応するバイトがありません。 このバイトに一致する入力値内のバイトは、結果値から省略されます。
次のいずれかの条件で、A
VALUE_ERROR
例外が発生します。
-
入力値が、NULLであるか長さが0である。
-
一致する文字列が、NULLであるか長さが0である。
-
置換文字列が、NULLであるか長さが0である。
構文
result := UTL_RAW.TRANSLATE(input, match, replace_bytes);
説明:
-
result
は、ファンクションの出力値を保持する変数です。 これは、データ型RAW
です。 -
input
は、変更するデータ型RAW
の入力値です。 -
match
は、input
で検索し、replace_bytes
に変更するバイト0コードを指定します。 これは、データ型RAW
です。 -
replace_bytes
は、matchで指定されたコードを置換するバイト・コードを指定します。 これは、データ型RAW
です。
UTL_RAW.TRANSLITERATE
UTL_RAW
.TRANSLITERATE
は、一致文字列内のすべてのバイトの発生を対応する置換文字列に置換します。 入力値内のバイトが一致する文字列と比較され、見つからない場合、バイトは変更されずに結果値にコピーされます。 見つかった場合、置換文字列内の同一のオフセットのバイトによる結果値に置換されるか、オフセットが置換文字列の長さを超える場合、指定する埋込みバイトに置換されます。 一致する文字列のバイトの文字列内の左端の発生のみが使用されます。 後続の重複する発生は無視されます。 UTL_RAW
.TRANSLITERATE
の結果値は、常に、入力値の長さと同じです。
置換文字列が一致する文字列より短いと、選択された一致する文字列バイトに置換文字列内に対応するバイトがない場合、埋込みバイトは結果値に置かれます。 入力値がNULLまたは長さが0の場合、A VALUE_ERROR例外が発生します。
UTL_RAW
.TRANSLITERATE
は、次の点でUTL_RAW
.TRANSLATE
と異なります。
-
置換文字列で定義されていない入力値のバイトが、指定する値で埋め込まれる。
-
結果値は、常に、入力値の長さと同じである。
構文
result := UTL_RAW.TRANSLITERATE (input, replace_bytes, match, pad);
説明:
-
result
は、ファンクションの出力値です。 これは、データ型RAW
です。 -
Input
は、変更するデータ型RAW
の入力値です。 -
replace_bytes
は、matchの対応するバイトが変更されたバイト・コードを指定します。 この値は、RAWデータ型のいずれかの有効な長さです。 デフォルトはNULL値で、必要に応じ、matchの長さまでの埋込みで有効に拡張します。 -
Match
は、input
で一致するbyte
コードを指定します。 この値は、RAWデータ型のいずれかの有効な長さです。 デフォルト値は、X'00'からX'FF'です。 -
Pad
は、replace_bytes
がマッチより短い場合にreplace_bytes
の長さを拡張するために使用される単一バイト値です。 デフォルトは、X'00'です。UTL_RAW
.TRANSLATE
は、次の点でUTL_RAW
.TRANSLITERATE
ファンクションと異なります。-
一致および置換文字列で使用されるRAW値に、デフォルト値がない。
-
置換文字列で定義されていない入力値のバイトが、結果値で省略される。
-
結果値が、入力値より短いことがある。
-
UTL_RAW.XRANGE
UTL_RAW
.XRANGE
は、指定する範囲内のすべての有効なシングルバイト・コードを含むRAW値を戻します。 開始バイト値が、終了バイト値よりも大きい場合、結果バイトの連続は開始バイトから始まり、X'FF'からX'00'を折り返して終了バイトで終わります。
指定する場合、開始および終了バイトの値は、シングルバイトRAW値である必要があります。
構文
result := UTL_RAW.XRANGE(start, end
);
説明:
-
result
は、ファンクションの出力値です。 これは、データ型RAWです。 -
start
は、始まりのシングルバイト・コードです。 デフォルトは、X'00'です。 -
start
は、終わりのシングルバイト・コードです。 デフォルトは、X'FF'です。