ヘッダーをスキップ
Oracle Database Gateway for WebSphere MQインストレーションおよびユーザーズ・ガイド
11gリリース1(11.1)
E05710-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

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 Installation and User's Guide for Microsoft Windows (32-Bit)』を参照してください。この付録の内容は次のとおりです。

B.1 メッセージのデータ型

WebSphere MQキューに送信またはWebSphere MQキューから取得するメッセージは、MIPプロシージャにより定義されないデータとして転送されます。データ・プロファイルがMIPで定義されると、MIPはメッセージ・データをOracleデータ型から受信側アプリケーションが理解できるターゲット・データ型に変換します。メッセージ・データは、WebSphere MQキューに送信される前に、RAWデータ型のバッファに圧縮されます。同様の変換プロセスが、メッセージの受信時に適用されます。MIPはメッセージをバッファから解凍し、指定されたOracleデータ型に変換します。

MIPは、UTL_RAWパッケージのファンクションを使用して、メッセージ・データ変換を実行します。UTL_RAWパッケージはPL/SQLパッケージで、これには、WebSphere MQキューを介して送受信されるメッセージ・データを、RAWデータ型およびPL/SQLデータ型を使用して変換および圧縮するプロシージャが含まれています。

必要に応じ、UTL_RAWファンクションを使用して、生成済MIPのメッセージ・データ変換を拡張できます。データ・プロファイルがMIPで定義されていない場合、UTL_RAWファンクションを使用する独自の変換プロシージャを作成し、メッセージの送信およびメッセージの受信直後に、これらの機能をコールできます。

UTL_RAWパッケージは、ゲートウェイに含まれません。これは、各Oracleデータベースとともに出荷されます。UTL_RAWパッケージの詳細は、使用するOracle DBAを参照してください。

B.2 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で文字データ型に変換され、表示されます。

B.2.1 UTL_RAW.TO_RAW

PGM_UTL.TO_RAWは、PGM.MQODPGM.MQMDPGM.MQPMOおよびPGM.MQGMOオブジェクトの値をRAW値に変換します。

構文

result := PGM_UTL.TO_RAW(input);

説明:

  • resultは、ファンクションの出力値を保持する変数です。これは、データ型RAWです。

  • inputは、ロー・データに変換されるPGM.MQODPGM.MQMDPGM.MQPMOまたはPGM.MQGMOデータ型オブジェクトの入力値です。

B.2.2 UTL_RAW.BIT_AND

UTL_RAW.BIT_ANDは、2つのRAW値のビット単位の論理AND操作を実行します。値の長さが異なる場合、2つの値の短い方の最終バイトの後でAND操作は終了します。長い値の未処理の部分は、最終結果を得るために部分結果に追加されます。結果値の長さは、2つの入力値の長い方と同等です。

構文

result := UTL_RAW.BIT_AND(input1, input2);

説明:

  • resultは、ファンクションの出力値を保持する変数です。これは、データ型RAWです。input1またはinput2がNULLの場合、値はNULLです。

  • input1は、RAWデータ型からBIT_ANDinput2の入力値です。

  • input2は、RAWデータ型からBIT_ANDinput1の入力値です。

B.2.3 UTL_RAW.BIT_COMPLEMENT

UTL_RAW.BIT_COMPLEMENTは、RAW値のビット単位の論理COMPLEMENT操作を実行します。結果値の長さは、入力値の長さと同じです。

構文

result := UTL_RAW.BIT_COMPLEMENT(input);

説明:

  • resultは、ファンクションの出力値を保持する変数です。これは、データ型RAWです。inputがNULLの場合、値はNULLです。

  • inputは、COMPLEMENT操作を実行するRAWデータ型の入力値です。

B.2.4 UTL_RAW.BIT_OR

UTL_RAW.BIT_ORは、2つのRAW値のビット単位の論理OR操作を実行します。値の長さが異なる場合、2つの値の短い方の最終バイトの後でOR操作は終了します。長い値の未処理の部分は、最終結果を得るために部分結果に追加されます。結果値の長さは、2つの入力値の長い方と同等です。

構文

result := UTL_RAW.BIT_OR(input1, input2);

説明:

  • resultは、ファンクションの出力値を保持する変数です。これは、データ型RAWです。input1またはinput2がNULLの場合、値はNULLです。

  • input1は、RAWデータ型からBIT_ORinput2の入力値です。

  • input2は、RAWデータ型からBIT_ORinput1の入力値です。

B.2.5 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は、RAWデータ型からEXCLUSIVE ORinput2の入力値です。

  • input2は、RAWデータ型からEXCLUSIVE ORinput1の入力値です。

B.2.6 UTL_RAW.BIT_TO_RAW

UTL_RAW.CAST_TO_RAWは、データ型VARCHAR2の値を同じバイト数でRAW値に変換します。入力値は、文字ではなくシングルバイト8ビットの構成として処理されます。マルチバイト・キャラクタ境界は無視されます。データは、データ型RAWに変化するのみで、まったく変更されません。

構文

result := UTL_RAW.CAST_TO_RAW(input);

説明:

  • resultは、ファンクションの出力値を保持する変数です。これは、データ型RAWです。inputがNULLの場合、値はNULLです。

  • inputは、RAWデータに変換するVARCHAR2データ型の入力値です。

B.2.7 UTL_RAW.CAST_TO_VARCHAR2

UTL_RAW.CAST_TO_VARCHAR2は、RAW値を、データ型VARCHAR2の値に同じバイト数で変換します。結果は、文字ではなく、シングルバイト8ビットの構成として処理されます。マルチバイト・キャラクタ境界は無視されます。データは、データ型VARCHAR2に変化するのみで、まったく変更されません。

構文

result := UTL_RAW.CAST_TO_VARCHAR2(input);

説明:

  • resultは、ファンクションの出力値を保持する変数です。これは、データ型VARCHAR2です。inputがNULLの場合、値はNULLです。

  • inputは、データ型VARCHAR2に変換するRAWデータ型の入力値です。

B.2.8 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'です。

B.2.9 UTL_RAW.CONCAT

UTL_RAW.CONCATは、最大12個のRAW値のセットを単一のRAW値に転結します。値は、左から右へパラメータ・リストに表示される順序で、まとめて追加されます。NULL入力値はスキップされ、連結は次のNULLではない値で操作を継続します。

入力値の長さの合計が、32767バイトを超える場合、VALUE_ERROR例外が発生します。

構文

result := UTL_RAW.CONCAT(input1, ...  input12);

説明:

  • resultは、ファンクションの出力値を保持する変数です。これは、データ型RAWです。

  • input1input12は、連結するRAWデータ型の入力値です。

B.2.10 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が現在使用しているグローバリゼーション・サポート・キャラクタ・セットです。

B.2.11 UTL_RAW.COPIES

UTL_RAW.COPIESは、1つ以上の値のコピーを戻します。値は、まとめて連結されます。次のいずれかの条件で、A VALUE_ERROR例外が発生します。

  • 入力値が、NULLであるか長さが0である。

  • コピー数に負の数が指定される。

  • 結果の長さが、32767バイトを超えている。

構文

result := UTL_RAW.COPIES(input, number);

説明:

  • resultは、ファンクションの出力値を保持する変数です。これは、RAWデータ型です。

  • inputは、コピーするRAWデータ型の値です。

  • numberは、入力をコピーする回数です。これは、正の数である必要があります。

B.2.12 UTL_RAW.LENGTH

UTL_RAW.LENGTHは、RAW値の長さをバイトで戻します。

構文

result := UTL_RAW.LENGTH(input);

説明:

  • resultは、ファンクションの出力値です。これは、NUMBERデータ型です。

  • inputは、評価するRAWデータ型の入力値です。

B.2.13 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の長さを超える場合に埋め込むために使用されるシングル・バイト値です。デフォルトは、X'00'です。

B.2.14 UTL_RAW.REVERSE

UTL_RAW.REVERSEは、エンドツーエンドからRAW値のバイト順序を逆にします。たとえば、このファンクションは、X'0102F3'を逆にしてX'F30201'に、またはxyzを逆にしてzyxにします。結果値の長さは、入力値の長さと同じです。入力値がNULLまたは長さが0の場合、A VALUE_ERROR例外が発生します。

構文

result := UTL_RAW.REVERSE(input);

説明:

  • resultは、ファンクションの出力値です。これは、RAWデータ型です。

  • inputは、順序を逆にするRAWデータ型の入力値です。

B.2.15 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からのバイトであるか、inputがNULLの場合、値はNULL値です。

  • inputは、バイトの一部の抽出を開始する位置のRAWデータ型の入力値です。

  • positionは、抽出を開始するバイト位置です。この値は、0にはできません。positionの値が負の数の場合、SUBSTRは、入力の終わりから逆向きにカウントします。

  • lengthは、positionの後に、inputから抽出するバイト数です。この値は、0より大きい必要があります。指定されない場合、入力の終わりのすべてのバイトが戻されます。

B.2.16 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に変更するためのバイト・コードを指定します。これは、データ型RAWです。

  • replace_bytesは、matchで指定されたコードを置換するバイト・コードを指定します。これは、データ型RAWです。

B.2.17 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で一致するバイト・コードを指定します。この値は、RAWデータ型のいずれかの有効な長さです。デフォルト値は、X'00'〜X'FF'です。

  • padは、replace_bytesがmatchより短い場合、replace_bytesの長さを拡張するために使用されるシングル・バイト値です。デフォルトは、X'00'です。

    UTL_RAW.TRANSLATEは、次の点でUTL_RAW.TRANSLITERATEファンクションと異なります。

    • 一致および置換文字列で使用されるRAW値に、デフォルト値がない。

    • 置換文字列で定義されていない入力値のバイトが、結果値で省略される。

    • 結果値が、入力値より短いことがある。

B.2.18 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'です。