機械翻訳について

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ビット)」を参照してください。

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

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パッケージです。

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

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

B.2 UTL_RAW関数

このトピックでは、UTL_RAW関数について説明します。

UTL_RAW関数は、次の構文でコールされます:

UTL_RAW.function(arg1, arg2, ...)

ファンクション名、引数、そのOracleデータ型および戻り値データ型は、各ファンクションの説明とともにこの付録で説明されます。 それぞれの説明で、ファンクションは、次の変数に置かれる結果のファンクション値を示すPL/SQL構文とともに説明されます。

result := UTL_RAW.function(arg1, arg2, ...);

ただし、ファンクションは、PL/SQL式内のコンポーネントとしても使用できます。 たとえば、この関数は、「こんにちは」および「世界!」という2つの文字列を、 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.MQOD, PGM.MQMD, PGM.MQPMOおよびPGM.MQGMOオブジェクトの値をRAW値に変換します。

構文

result := PGM_UTL.TO_RAW(input);

説明:

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

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

B.2.2 UTL_RAW.BIT_AND

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

構文

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

説明:

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

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

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

B.2.3 UTL_RAW.BIT_COMPLEMENT

UTL_RAWBIT_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操作を実行します。 値の長さが異なる場合、OR操作は、2つの値のうち最も短いバイトの最後のバイトの後に終了します。 長い値の未処理の部分は、最終結果を得るために部分結果に追加されます。 結果値の長さは、2つの入力値の長い方と同等です。

構文

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

説明:

  • resultは、関数の出力値を保持する変数です。 データ型はRAWです。 input1またはinput2がnullの場合、値はnullです。

  • input1は、input2を使用したRAWデータ型からBIT_ORへの入力値です。

  • input2は、input1を使用したRAWデータ型からBIT_ORへの入力値です。

B.2.5 UTL_RAW.BIT_XOR

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

構文

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

説明:

  • resultは、関数の出力値を保持する変数です。 データ型はRAWです。 input1またはinput2がnullの場合、値はnullです。

  • input1は、input2を使用したEXCLUSIVE ORへのRAWデータ型の入力値です。

  • input2は、input1を使用したEXCLUSIVE ORへのRAWデータ型の入力値です。

B.2.6 UTL_RAW.BIT_TO_RAW

UTL_RAWCAST_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_RAWCAST_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_RAWCOMPAREは、あるRAW値と別のRAW値を比較します。 同一の場合、UTL_RAWCOMPAREは0を返します。 同じでない場合、COMPAREは、一致しない最初のバイトの位置を返します。 入力値の長さが異なる場合、指定する値により短い方の入力値が右側に埋め込まれます。

構文

result := UTL_RAW.COMPARE(input1, input2[, pad]);

説明:

  • resultは、関数の出力値を保持する変数です。 データ型はNUMBERです。 input1およびinput2の値がnullまたは同一の場合、または最初の不一致バイトの1から番号付けされた位置の場合、0の値が返されます。

  • input1は、比較するRAWデータ型の最初の入力値です。

  • input2は、比較するRAWデータ型の2番目の入力値です。

  • padis短い入力値のパディングに使用される単一バイト値。 デフォルトは、X'00'です。

B.2.9 UTL_RAW.CONCAT

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

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

構文

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

説明:

  • resultは、関数の出力値を保持する変数です。 データ型はRAWです。

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

B.2.10 UTL_RAW.CONVERT

UTL_RAWCONVERTは、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は、入力が現在使用しているグローバリゼーション・サポート文字セットです。

B.2.11 UTL_RAW.COPIES

UTL_RAWCOPIESは、値の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_RAWLENGTHは、RAW値の長さをバイト単位で返します。

構文

result := UTL_RAW.LENGTH(input);

説明:

  • resultは、関数の出力値です。 NUMBERデータ型です。

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

B.2.13 UTL_RAW.OVERLAY

UTL_RAWOVERLAYは、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'です。

B.2.14 UTL_RAW.REVERSE

UTL_RAWREVERSEは、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_RAWSUBSTRは、RAW値からバイトを削除します。 削除するバイトの開始点としてポジティブ数値を指定した場合、SUBSTRは入力値の先頭からカウントされ、最初のバイトが検索されます。 負の数を指定した場合、UTL_RAWSUBSTRは、入力値の末尾から逆方向にカウントして最初のバイトを検索します。

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_RAWTRANSLATEは、指定したスキームに従って、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です。

B.2.17 UTL_RAW.TRANSLITERATE

UTL_RAWTRANSLITERATEは、一致する文字列内のすべてのバイトを、置換文字列の対応するバイトで置換します。 入力値内のバイトが一致する文字列と比較され、見つからない場合、バイトは変更されずに結果値にコピーされます。 見つかった場合、置換文字列内の同一のオフセットのバイトによる結果値に置換されるか、オフセットが置換文字列の長さを超える場合、指定する埋込みバイトに置換されます。 一致する文字列のバイトの文字列内の左端の発生のみが使用されます。 後続の重複する発生は無視されます。 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は、対応する一致バイトが変更されるバイト・コードを指定します。 この値は、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値に、デフォルト値がない。

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

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

B.2.18 UTL_RAW.XRANGE

UTL_RAW.XRANGE は、指定した範囲内のすべての有効な1バイト・コードを含むRAW値を返します。 開始バイト値が、終了バイト値よりも大きい場合、結果バイトの連続は開始バイトから始まり、X'FF'からX'00'を折り返して終了バイトで終わります。

指定する場合、開始および終了バイトの値は、シングルバイトRAW値である必要があります。

構文

result := UTL_RAW.XRANGE(start, end);

説明:

  • resultは、関数の出力値です。 これは、データ型RAWです。

  • startは、開始するシングル・バイト・コードです。 デフォルトは、X'00'です。

  • endは、終了するシングル・バイト・コードです。 デフォルトは、X'FF'です。