A PGM、PGM_UTL8およびPGM_SUPパッケージ
Visual Workbenchを使用して、ゲートウェイを介してWebSphere MQにアクセスするアプリケーションを開発します。 Visual Workbenchは、WebSphere MQにアクセスするインタフェースを定義し、OracleアプリケーションがゲートウェイとインタフェースするためのPL/SQLコード(MIP)を自動的に生成します。 Visual Workbenchの詳細については、「Oracle Procedural Gateway Visual Workbench for WebSphere MQインストレーションおよびユーザーズ・ガイドfor Microsoft Windows (32-bit)」を参照してください。
MIPは、PGM、PGM_UTL8、および PGM_SUPパッケージの定義を使用します。 必要に応じ、MIPを変更してVisual WorkbenchでサポートされていないWebSphere MQ関数を含めることができます。 これは、PGM、PGM_UTL8、およびPGM_SUPパッケージの定義とプロシージャを使用して行います。
PGM、PGM_UTL8、およびPGM_SUPパッケージは、Visual WorkbenchリポジトリまたはDG4MQデプロイメント環境の作成時にインストールされます。
次のトピックでは、PGM、PGM_UTL8、およびPGM_SUPパッケージについて説明します:
- 「PGMパッケージ、DG4MQゲートウェイ・プロシージャ、およびデータ型定義」
PGMパッケージのゲートウェイ・プロシージャとタイプ定義は、WebSphere MQ MQI呼び出しの後にモデル化されます。 - 「MQCLOSEプロシージャ」
MQCLOSEはキューをクローズします。 - 「MQGETプロシージャ」
MQGETプロシージャは、キューからメッセージを取得します。 - 「MQOPENプロシージャ」
MQOPENはキューへのアクセスを確立します。 - 「MQPUTプロシージャ」
MQPUTはキューにメッセージを送信します。 - 「PGM_SUPパッケージ」
PGM_SUPには、ゲートウェイプロシージャおよびPGMタイプ定義で使用する定数および例外定義が含まれています。
PGMパッケージ、DG4MQゲートウェイ・プロシージャ、およびデータ型定義
PGMパッケージのゲートウェイ・プロシージャおよび型定義は、WebSphere MQ MQIコール後にモデリングされます。
MQIで検知されるすべての関係するコールおよび構造体に対し、対応物がPGM内に存在し、関連するデータ型定義がpgmobj.sql内に存在します。 ゲートウェイ・プロシージャおよびPGM型定義には、そのMQI対応物と同様の名前が付けられます。 ただし、引数または構造体フィールドのデータ型は、対応するPL/SQLデータ型に変更されます。
これらのOracleアプリケーション内のプロシージャおよび型定義は、WebSphere MQアプリケーションの記述にとても類似しています。 すべてのPGM型定義のフィールドが初期化されます。 これらの初期化値は、MQIにより定義されるデフォルト値に基づきます。
ゲートウェイ・プロシージャおよびPGM型定義を使用するには、通常、MQIおよびWebSphere MQプログラミングの幅広い知識が必要です。 これらのプロシージャおよびレコードは、MQIフローチャート、セマンティックおよび構文ルールに従います。
PGMパッケージは、Visual WorkbenchリポジトリまたはDG4MQデプロイメント環境が作成され、パブリック・アクセスが付与されたときにインストールされます。 ゲートウェイは、プロシージャを記述または実行する際にすべてのスキーマ名を省略するため、このパッケージにスキーマはありません。 スキーマ修飾子を、プロシージャおよび型定義の名前に接頭辞として加える必要はありません。
- 「プロシージャと型定義の要約」
ゲートウェイプロシージャおよびPGMは、以下のプロシージャおよびタイプ定義を提供します。 - 「手続き規則」
ゲートウェイ手順は、この付録でアルファベット順に説明されています。 - 「ゲートウェイによって実行されるMQIコール」
これらのMQI呼び出しには、ゲートウェイ内で同等のプロシージャがありません。 - 「サポートされていないMQIコール」
これらのMQI呼び出しは、ゲートウェイでサポートされていません。 - 「移行ヒント」
この項では、Oracle9i DG4MQおよび既存のカスタマイズされたPL/SQLアプリケーション・プログラムをOracle Database Gateway for WebSphere MQ機能を使用するようにアップグレードする方法について説明します。
関連項目:
WebSphere MQアプリケーションの記述とMQI呼び出しの使用については、IBM 「MQSeriesアプリケーション・プログラミング・リファレンス」を参照してください。
プロシージャと型定義の要約
ゲートウェイプロシージャおよびPGMは、以下のプロシージャおよびタイプ定義を提供します。
表A-1 プロシージャおよび型定義
| プロシージャ | プロシージャの目的 | プロシージャで使用する型定義 |
|---|---|---|
|
|
キューをオープンします。 |
|
|
|
|
|
|
|
32767バイトより長いメッセージをキューに送信します。 |
|
|
|
|
|
|
|
32767バイトより長いメッセージをキューに送信します。 |
|
|
|
|
型定義を使用しません。 |
手続き規則
この付録では、ゲートウェイ・プロシージャがアルファベット順に説明されています。
型定義はそれを使用するプロシージャとともに説明されます。 説明は、変更可能な型定義フィールドのみを対象にしています。 MQIフィールドに同等のその他のフィールドは、WebSphere MQで予約されている、ゲートウェイでサポートされていない、または変更できない値を含んでいるため、省略されます。
プロシージャの定義は、同等のMQIコールに関連付けられているIBM引数名を使用して表示されます。 次に例を示します。
MQGET(hobj, mqmd, mqgmo, msg)
MQGETコールの構文は次のとおりです。
MQGET(handle, descript, get_options, message);
説明:
-
handleは、hobjとして定義されている最初の引数の名前です。 -
descriptは、mqmdとして定義されている2番目の引数の名前です。 -
get_optionsは、mqgmoとして定義されている3番目の引数の名前です。 -
messageは、定義でmsgとして指定されている4番目の引数の名前です。定義で示される順序で引数をコード化する場合、これらの引数に独自の名前を使用できます。
ゲートウェイによって実行されるMQIコール
これらのMQI呼び出しには、ゲートウェイ内で同等のプロシージャがありません。
次のMQIコールでは、Oracleデータベースおよびゲートウェイが自動的にこれらのMQIコールの関数を実行するため、ゲートウェイに同等のプロシージャがありません。
-
トランザクション・コントロールは、Oracleトランザクション・コーディネータにより処理されます。 Oracleアプリケーションは、WebSphere MQに送信された変更を元に戻すために別の
MQBACKコールを起動する必要がありません。 -
Oracleアプリケーションがゲートウェイ・プロシージャを参照すると常に、Oracleデータベースおよびゲートウェイによりキュー・マネージャへの接続が確立されます。 ゲートウェイ・プロシージャをコールする際に使用されるデータベース・リンク名が、ゲートウェイが接続するキュー・マネージャを決定します。
-
トランザクション・コントロールは、Oracleトランザクション・コーディネータにより処理されます。 Oracleアプリケーションは、WebSphere MQに送信された変更をコミットするために別の
MQCMITコールを起動する必要がありません。 -
キュー・マネージャへの接続は、Oracleデータベースおよびゲートウェイによりクローズされます。 Oracleアプリケーションが、キュー・マネージャとの接続をクローズする必要はありません。 現在のOracleセッションを終了またはデータベース・リンクを削除すると、キュー・マネージャとの接続が終了します。
移行のヒント
この項では、Oracle9i DG4MQおよび既存のカスタマイズされたPL/SQLアプリケーション・プログラムをOracle Database Gateway for WebSphere MQ機能を使用するようにアップグレードする方法について説明します。
DG4MQデータ型とRPC APIプロトタイプは、ゲートウェイ・インフラストラクチャの要件を満たすように変更されています。
DG4MQをOracle 10gリリース2以上にアップグレードする場合は、別の開発用Oracleシステムに新しいバージョンのDG4MQをインストールすることをお薦めします。 システム構成およびテストの終了後、すべてのCOBOLコピー・ブックを転送し、Oracle Visual Workbenchを使用してMIPを再生成して再コンパイルしてください。 カスタマイズされたコードに必要な変更を加え、再コンパイルしてください。
DG4MQリリース8および9の移行PL/SQLアプリケーション
DG4MQリリース8および9のPL/SQLアプリケーションを移行するには:
-
PL/SQL宣言セクションで、次のDG4MQデータ型から
dblink参照を削除します:-
PGM8。MQOD -
PGM8。MQMD -
PGM8。MQPMO -
PGM8。MQGMO
次の
PGM8.MQ*RAWデータ型を削除します。-
PGM8。MQODRAW -
PGM8。MQMDRAW -
PGM8。MQPMORAW -
PGM8。MQGMORAW
-
-
PL/SQL宣言セクションで、キューのハンドルのデータ型、
PGMの3番目の引数を変更します。MQOPEN、BINARY_INTEGERからPGMへ。パッケージ名PGM8をPGMに置き換えます。キューのハンドルのデータ型、
PGM.MQOPENの3番目の引数を、BINARY_INTEGERからPGM.MQOHに変更します。たとえば、バージョン8および9では、次のデータ型を、Oracle 10g用にリストしたデータ型に変更してください。
objdesc PGM8.MQOD; msgdesc PGM8.MQMD; putmsgopts PGM8.MQPMO; getmsgopts PGM8.MQGMO; hobj BINARY_INTEGER; mqodRaw PGM8.MQODRAW; mqmdRaw PGM8.MQMDRAW; mqpmoRaw PGM8.MQPMORAW; mqgmoRaw PGM8.MQGMORAW;
Oracle 10gリリース2以降のデータ型:
objdesc PGM.MQOD; msgdesc PGM.MQMD; putmsgopts PGM.MQPMO; getmsgopts PGM.MQGMO; hobj PGM.MQOH;
-
PL/SQL実行可能セクションで、次のDG4MQプロシージャから
dblink参照を除去してください:PGM8.MQOPEN@dblink() PGM8.MQPUT@dblink() PGM8.MQGET@dblink() PGM8.MQCLOSE@dblink()
オブジェクト・キュー名が定義された新しい
PGM.MQOD型にdblinkを定義します。バージョン8および9の例:
objdesc.objectname := 'QUEUE1';
Oracle 10gリリース2以降の場合:
objdesc.objectname := 'QUEUE1'; objdesc.dblinkname := 'dblink';
-
必要に応じて、すべてのDG4MQプロシージャのパッケージ名
PGM8をPGMに変更します。バージョン8および9の例:
PGM8.MQOPEN@dblink(); PGM8.MQPUT@dblink(); PGM8.MQGET@dblink(); PGM8.MQCLOSE@dblink();
Oracle 10gリリース2以降の場合:
PGM.MQOPEN; PGM.MQPUT; PGM.MQGET; PGM.MQCLOSE;
-
PL/SQL実行可能セクションで、
PGM_UTL8で始まるすべての文を削除します。RAW_TO_*、すべてのPGM_UTL8を削除します。TO_RAW文を実行し、MQ*RAWデータ・タイプへのすべての参照を、以下のDG4MQプロシージャで一致するMQ*データ・タイプに置き換えます:-
PGM。MQOPEN; -
PGM。MQPU; -
PGM。MQGET; -
PGM.MQOCLOSE;
バージョン8および9の例:
mqodRaw := PGM_UTL8.TO_RAW(objdesc); PGM8.MQOPEN@dblink(mqodRaw, options, hobj); objdesc := PGM_UTL8.RAW_TO_MQMD(mqodRaw); mqmdRaw := PGM_UTL8.TO_RAW(msgdesc); mqpmoRaw := PGM_UTL8.TO_RAW(putmsgopts); PGM8.MQPUT@dblink(hobj, mqmdRaw, mqpmoRaw, putbuffer); putmsgopts := PGM_UTL8.RAW_TO_MQPMO(mqpmoRaw); msgdesc := PGM_UTL8.RAW_TO_MQMD(mqmdRaw); mqmdRaw := PGM_UTL8.TO_RAW(msgdesc); mqgmoRaw := PGM_UTL8.TO_RAW(getmsgopts); PGM8.MQGET@dblink(hobj, mqmdRaw, mqgmoRaw, putbuffer); getmsgopts := PGM_UTL8.RAW_TO_MQGMO(mqgmoRaw); msgdesc := PGM_UTL8.RAW_TO_MQMD(mqmdRaw);
Oracle 10gリリース2以降の場合:
PGM.MQOPEN(objdesc, options, hobj); PGM.MQPUT(hobj, msgdesc, putmsgopts, putbuffer); PGM.MQGET(hobj, msgdesc, getmsgopts, getbuffer);
-
-
PL/SQL実行可能ファイル・セクションで、古い
MQ*RAWデータ型を参照するすべての文を削除します。
DG4MQリリース4.0.1。*。* PL/SQLアプリケーションの移行
次の手順に従い、アプリケーションを移行してください。
MQCLOSEプロシージャ
MQCLOSEは、キューをクローズします。
その結果、キュー・ハンドルは無効になり、MQOPENを別にコールしアプリケーションでキューを再オープンしてから、キューへの別のMQPUT、MQGETまたはMQCLOSEコールを発行する必要があります。
MQCLOSEは、次の点でMQIコールと異なります。
-
ゲートウェイが自動的にキュー・マネージャ接続を管理するため、接続ハンドル引数は
MQCLOSEから省略されます。 -
MQI完了コードは、プロシージャ引数リストに含まれません。 対応するMQIコールの失敗によりにゲートウェイ・プロシージャが失敗すると、Oracleエラー・メッセージがコール元に戻されます。
-
MQI理由コードは、プロシージャ引数リストに含まれません。 ゲートウェイ・プロシージャに対応するMQIコールが理由コードを戻すと、コール元に戻されるOracleエラー・メッセージに理由コードが含まれます。
定義
MQCLOSE(hobj, options)
説明:
-
hobjには、キューを閉じるためのハンドルが含まれています。 このハンドルは、MQOPENへの以前のコールによって戻されます。 この入力引数は、Oracle 10gリリース2の新しいPGM.MQOHオブジェクトです。 -
optionsはクローズ・アクションを指定します。PGM_SUPを使用してください。MQCO_NONEまたはその他のクローズ・オプションのPGM_SUP定数。 この入力引数は、BINARY_INTEGERPL/SQLデータ型です。
次のように、引数の順序が必須の順序の場合、独自の変数名を使用できます。
MQCLOSE(handle, close_options);
関連トピック
MQGETプロシージャ
MQGETプロシージャは、キューからメッセージを取得します。
PGM_SUP.MQOO_INPUT_AS_Q_DEF(または同等のオプション)によって、MQOPENへの以前のコールでキューがオープンされている必要があります。 MQGETの形式で取得するメッセージは、32767バイトより短い必要があります。
MQGETは、次の点でMQIコールと異なります。
-
ゲートウェイが自動的にキュー・マネージャ接続を管理するため、接続ハンドル引数は
MQGETから省略されます。 -
MQI完了コードは、プロシージャの引数リストに含まれません。 対応するMQIコールの失敗によりにゲートウェイ・プロシージャが失敗すると、Oracleエラー・メッセージがコール元に戻されます。
-
MQI理由コードは、プロシージャの引数リストに含まれません。 ゲートウェイ・プロシージャに対応するMQIコールが理由コードを戻すと、コール元に戻されるOracleエラー・メッセージに理由コードが含まれます。
-
Oracleデータベースおよびゲートウェイが自動的にメッセージのデータ長を追跡するため、
msg長さ引数は、プロシージャの引数リストに含まれません。
定義
MQGET(hobj,mqmd,mqgmo,msg)
説明:
-
hobjには、キューを開くためのハンドルが含まれています。 このハンドルは、MQOPENへの以前のコールによって戻されます。 この入力引数は、Oracle 10gリリース2の新しいPGM.MQOHオブジェクトです。 -
mqmdは、入力時に検索されるメッセージの属性を記述するために使用されます。 これらの属性の説明には、PGM.MQMDオブジェクト型定義のフィールドを使用します。出力では、
mqmdは、リクエストの処理方法に関する情報を含みます。 その結果、キュー・マネージャは、いくつかのPGM.MQMDオブジェクト・フィールドを設定します。この入力および出力引数は、
PGM.MQMDPL/SQLデータ型です。 -
mqgmoは、検索リクエストを制御するオプション値を記述するために入力に使用されます。 これらのオプションの説明には、PGM.MQGMOオブジェクト型定義のフィールドを使用します。その結果、出力では、キュー・マネージャは、いくつかの
PGM.MQGMOオブジェクト・フィールドを設定します。この入力および出力引数は、
PGM.MQGMOPL/SQLデータ型です。 -
msgには、取得したメッセージが含まれます。 この出力引数は、RAWまたはPGM.MQGET_BUFFERPL/SQLデータ型です。
例
-
引数の順序が必須の順序の場合、独自の変数名を使用します。
MQGET(handle, descript, opts, message);
-
次の例は、ゲートウェイ(UNIXベース・システムでは
ORACLE_HOME\dg4mq\getsample.sql on Microsoft Windows andORACLE_HOME/dg4mq/sample/getsample.sql)のサンプルとして提供され、WebSphere MQキューからすべてのメッセージを読み取ります。 詳細は、WebSphere MQアプリケーション・プログラミングに関するIBMのドキュメントを参照してください。
例A-1 getsample.sql
---- Copyright Oracle, 2007 All Rights Reserved.
--
-- NAME
-- getsample.sql
--
-- DESCRIPTION
--
-- Specify the database link name you created for the gateway. To do this,
-- replace the database link name 'YOUR_DBLINK_NAME' with the dblink name
-- you chose when the database link was created.
--
-- This script performs a test run for the MQSeries gateway. In this
-- script the queuename is 'YOUR_QUEUE_NAME', replace it with a valid
-- queue name at the queue manager the gateway is configured for.
--
-- NOTES
-- Run the script from the SQL*Plus command line.
--
-- Make the sure the user is granted 'EXECUTE' on package dbms_output
--
SET SERVEROUTPUT ON
DECLARE
objdesc PGM.MQOD;
msgDesc PGM.MQMD;
getOptions PGM.MQGMO;
objectHandle PGM.MQOH;
message raw(32767);
BEGIN
objdesc.OBJECTNAME := 'QUEUE1';
objdesc.DBLINKNAME := 'dg4mqdepdblink';
-- Open the queue 'YOUR_QUEUE_NAME' for reading.
PGM.MQOPEN(objdesc, PGM_SUP.MQOO_INPUT_AS_Q_DEF, objectHandle);
-- Get all messages from the queue.
WHILE TRUE LOOP
-- Reset msgid and correlid to get the next message.
msgDesc.MSGID := PGM_SUP.MQMI_NONE;
msgDesc.CORRELID := PGM_SUP.MQCI_NONE;
PGM.MQGET(objectHandle, msgDesc, getOptions, message);
-- Process the message....
DBMS_OUTPUT.PUT_LINE('message read back = ' || rawtohex(message));
END LOOP;
EXCEPTION
WHEN PGM_SUP.NO_MORE_MESSAGES THEN
DBMS_OUTPUT.PUT_LINE('Warning: No more message found on the queue');
-- Close the queue again.
PGM.MQCLOSE(objectHandle, PGM_SUP.MQCO_NONE);
WHEN OTHERS THEN
-- Re-raise the error;
DBMS_OUTPUT.PUT_LINE('Error: Oracle Database Gateway for WebSphere MQ
verification script failed.');
DBMS_OUTPUT.PUT_LINE(SQLERRM);
raise;
END;
/
注意:
注意:
例外句を省略すると、PL/SQLブロックは失敗します。 その場合、PGM_SUP.NO_MORE_MESSAGESエラー・コードが発生します。 MQGETに使用されるMSGIDおよびCORRELIDフィールドは、MQGETの各呼び出しの後に設定されます。 各サイクルでリセットされない場合、MQGETは、最後の読取り操作と同一の識別子を持つ次のメッセージ(通常は存在しません)をチェックします。 PL/SQLブロックは、1つのメッセージのみを読み取ります。
- 「PGM.MQMD型定義」
PGM。MQMDは、送信アプリケーションと受信アプリケーション間を移動するときにメッセージに付随する制御情報を指定します。 - 「PGM.MQGMO型定義」
PGMを使用してください。MQGMOを使用して、メッセージをキューから取り出す方法に関するオプションと制御情報を指定します。
PGM.MQMD型定義
PGM.MQMDは、送信側と受信側のアプリケーションの間を移動する際のメッセージを伴う制御情報を指定します。
また、キュー・マネージャまたは受信側アプリケーションによるメッセージの処理方法も含まれます。 PGM.MQMDは、取得されているメッセージの属性を説明します。
PGM.MQMDフィールドのデフォルト値を使用、または使用するアプリケーションが要求する値にフィールドを変更できます。 たとえば、次のようにしてフィールド値を変更します。
mqmd.field_name := field_value;
説明:
-
mqmdはPGMです。MQMDオブジェクトのデータ型であり、取得されるメッセージの属性を記述 -
field_nameは、PGMのフィールド名です。MQMDオブジェクト型定義。 必要な数のフィールドを設定できます。 フィールド名および説明の詳細は、表A-2を参照してください。 -
field_valueはfield_nameに割り当てる値です。 値を指定する、またはPGM_SUP定数を使用して、値を割り当てます。
表A-2 PGM.MQMDオブジェクト・フィールド
| フィールド名 | 説明 | PL/SQLデータ型 | 初期値 |
|---|---|---|---|
|
|
メッセージを送信するアプリケーションで、期待されるまたは期待されないイベントの発生時にキュー・マネージャで作成するレポート・メッセージ(複数可)を指定できます。 |
|
|
|
|
リプライ・メッセージ、レポート・メッセージ、または通常メッセージ(datagram)のメッセージ型を指定します。 PGM_SUP定数を使用して、値を割り当てます。 MSGTYPEフィールドを参照してください。 |
|
|
|
|
メッセージがキューに存続する時間を指定します。 有効期限の期間は10分の1秒単位で、送信側アプリケーションにより設定されます。 |
|
|
|
|
|
|
|
|
|
メッセージ・データ内の数値で使用されます。 |
|
|
|
|
メッセージ内の文字のコード化されたキャラクタ・セット識別子を指定します。 |
|
|
|
|
メッセージのコンテンツを受信側に伝える際に使用される空きフォーマット名。 フォーマットを指定する、または |
|
|
|
|
メッセージの優先順位を指定します。 |
|
|
|
|
送信側アプリケーションの入力フィールドです。 キュー・マネージャを再起動すると、永続キューは保持されます。 キュー・マネージャを再起動すると、非永続キューおよび一時キュー内のメッセージは失われます。 |
|
|
|
|
取得されるメッセージのメッセージ識別子を指定します(メッセージの受信時)。 メッセージの送信時に値が指定されていない場合( |
|
|
|
|
メッセージの受信時、取得するメッセージの相関識別子を指定します( |
|
|
|
|
|
|
|
|
|
返信先キューの名前を指定します。 これは、 また、これは、 |
|
|
|
|
キュー・マネージャで返信メッセージまたはレポートを送信する先を示します。 これは、 |
|
|
|
|
受信側アプリケーションの出力フィールドです。 メッセージを送信するユーザーを識別します。 |
|
|
|
|
アプリケーション間で会計情報を転送するために使用されます。 送信側アプリケーションが会計情報を提供する、または |
|
|
|
|
受信側アプリケーションがメッセージまたはその送信者に関するより多くの情報を提供するのに役立つよう、メッセージとともに送信する追加情報を指定します。 |
|
|
|
|
キュー上のメッセージにあるアプリケーションの種類を説明します。 |
|
|
|
|
キュー上にメッセージを置いたアプリケーションの名前を指定します。 送信側アプリケーションが、名前を指定するか、またはキュー・マネージャにこのフィールドを入力させます。 これは、受信側アプリケーションの出力フィールドです。 |
|
|
|
|
キュー上にメッセージが置かれた日付を指定します。 送信側アプリケーションが日付を設定することも、キュー・マネージャにこれを処理させることもできます。 キュー・マネージャで使用される日付書式は、 |
|
|
|
|
キュー上にメッセージが置かれた時間を指定します。 送信側アプリケーションが時間を設定することも、キュー・マネージャにこれを処理させることもできます。 キュー・マネージャで使用される時間書式は、 |
|
|
|
|
メッセージの元に関する情報をメッセージに追加するために送信側アプリケーションによって使用されます。 これは、受信側アプリケーションの出力フィールドです。 |
|
|
PGM.MQGMO型定義
PGM.MQGMOを使用して、キューからメッセージを取得する方法のオプションおよび制御情報を指定します。
PGM.MQGMOを使用して、キューからメッセージを取得する方法のオプションおよび制御情報を指定します。 PGM.MQGMOフィールドのデフォルト値を使用、または使用するアプリケーションが要求する値にフィールドを変更できます。 たとえば、次のようにしてフィールド値を変更します。
mqgmo.field_name := field_value
説明:
-
mqgmoは、PGM.MQGMOオブジェクト・データ型で、キューからメッセージを取得する方法のオプションおよび制御情報を指定します。 -
field_nameは、PGM.MQGMO型定義のフィールド名です。 必要な数のフィールドを設定できます。 名前およびフィールドの説明の詳細は、表A-3を参照してください。 -
field_valueはfield_nameに割り当てる値です。 値を指定する、またはPGM_SUP定数を使用して、値を割り当てます。
表A-3 PGM.MQGMOフィールド
| フィールド名 | 説明 | PL/SQLデータ型 | 初期値 |
|---|---|---|---|
|
|
|
|
(キューから取得されたメッセージは、Oracleトランザクション・コーディネータにより処理されます。) |
|
|
メッセージがキューに到着するまで |
|
|
|
|
メッセージが取得された宛先キューの解決された名前を含みます。 これは、コールから戻されるキュー・マネージャによって設定される出力フィールドです。 |
|
|
MQOPENプロシージャ
MQOPENは、キューへのアクセスを確立します。
キューを開くために選択されたモードに応じて、アプリケーションは後続のMQPUT、MQGET、またはMQCLOSEコールを発行できます。
MQOPENは、次の点でMQIコールと異なります。
-
ゲートウェイが自動的にキュー・マネージャ接続を管理するため、接続ハンドル引数は
MQOPENから省略されます。 -
MQI完了コードは、プロシージャ引数リストに含まれません。 対応するMQIコールの失敗によりにゲートウェイ・プロシージャが失敗すると、Oracleエラー・メッセージがコール元に戻されます。
-
MQI理由コードは、プロシージャ引数リストに含まれません。 ゲートウェイ・プロシージャに対応するMQIコールが理由コードを戻すと、コール元に戻されるOracleエラー・メッセージに理由コードが含まれます。
定義
MQOPEN(mqod, options,hobj)
説明:
-
mqodは、オープンするキューを指定します。 これらの属性の説明には、PGM.MQOD型定義のフィールドを使用します。 その結果、出力では、キュー・マネージャは、いくつかのPGM.MQODオブジェクト・フィールドを設定します。この入力および出力引数は、
PGM.MQODPL/SQLデータ型です。PGM.MQODの詳細は、PGM.MQOD型定義を参照してください。 -
optionsは、オープンの種類を指定します。 MQOPEN値を参照してください。 この入力引数は、BINARY_INTEGERPL/SQLデータ型です。 -
hobjは、キューがオープンした後のキューのハンドルを含み、後続のPGMコールの入力引数になります。 キュー・ハンドルは、次のいずれかの条件が発生するまで有効です。-
キューが
MQOPENのコールによりクローズする。 -
現行のトランザクションが、
COMMITまたはROLLBACKコマンドにより永続化される。 -
Oracleユーザー・セッションが、
DISCONNECTコマンドにより終了する。 この出力引数は、PGM.MQOHデータ型です。
-
次のように、引数の順序が必須の順序の場合、独自の変数名を使用できます。
MQOPEN and(descript, open_options, handle);
- 「PGM.MQOD型定義」
PGM。MQODは、開くオブジェクトを定義するために使用されます。
PGM.MQOD型定義
PGM.MQODは、オープンするオブジェクトの定義に使用されます。
PGM.MQODフィールドのデフォルト値を使用、または使用するアプリケーションが要求する値にフィールドを変更できます。 たとえば、次のようにしてフィールド値を変更します。
mqod.field_name := field_value
説明:
-
mqodは、PGM.MQODデータ型で、オープンするオブジェクトを指定します。 -
field_nameは、PGM.MQOD型定義のフィールド名です。 必要な数のフィールドを設定できます。 フィールド名および説明の詳細は、表A-4を参照してください。 -
field_valueはfield_nameに割り当てる値です。 値を指定する、またはPGM_SUP定数を使用して、値を割り当てます。
表A-4 PGM.MQODオブジェクト・フィールド
| フィールド名 | 説明 | PL/SQLデータ型 | 初期値 |
|---|---|---|---|
|
|
オープンするオブジェクトを指定します。 |
|
|
|
|
データベース・リンク名を指定します。 |
|
|
|
|
キュー・マネージャで定義されたオブジェクトのローカル名を指定します。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MQPUTプロシージャ
MQPUTは、キューにメッセージを送信します。
PGM_SUP.MQOO_OUTPUTの値に対するoptions引数セットによって、MQOPENへの以前のコールでキューがオープンされている必要があります。
MQPUTは、次のようにMQIコールと異なります。
-
ゲートウェイが自動的にキュー・マネージャ接続を管理するため、接続ハンドル引数は
MQPUTから省略されます。 -
MQI完了コードは、プロシージャ引数リストに含まれません。 対応するMQIコールの失敗によりにゲートウェイ・プロシージャが失敗すると、Oracleエラー・メッセージがコール元に戻されます。
-
MQI理由コードは、プロシージャ引数リストに含まれません。 ゲートウェイ・プロシージャに対応するMQIコールが理由コードを戻すと、コール元に戻されるOracleエラー・メッセージに理由コードが含まれます。
-
Oracleデータベースおよびゲートウェイが自動的にメッセージのデータ長を追跡するため、
msg長さ引数は、プロシージャの引数リストに含まれません。
定義
MQPUT(hobj, mqmd, mqpmo,msg)
説明:
-
hobjは、メッセージを送信するキューのハンドルを含みます。 このハンドルは、MQOPENへの以前のコールによって戻されます。 この入力引数は、Oracle 10gリリース2の新しいPGM.MQOHです。 -
mqmdは、取得されているメッセージの属性を説明する入力で使用されます。 これらの属性の説明には、PGM.MQMD型定義のフィールドを使用します。 出力では、mqmdは、リクエストの処理方法に関する情報を含みます。 その結果、キュー・マネージャは、いくつかのPGM.MQMDフィールドを設定します。この入力および出力引数は、
PGM.MQMDです。PGMの詳細については、MQMD、「PGM.MQMD型定義」を参照してください。 -
mqpmoは、配置リクエストをコントロールするオプション値を説明する入力で使用されます。 これらのオプションの説明には、PGM.MQPMO型定義のフィールドを使用します。 その結果、出力では、キュー・マネージャは、いくつかのPGM.MQPMOオブジェクト・フィールドを設定します。この入力および出力引数は、
PGM.MQPMOです。PGM.MQPMOの詳細は、PGM.MQPMO型定義を参照してください。 -
msgは、送信するメッセージを含みます。 この入力引数は、RAWPGM.MQPUT_BUFFERPL/SQLデータ型です。
例
-
引数の順序が必須の順序の場合、独自の変数名を使用できます。
MQPUT(handle, descript, options, message);
-
次のサンプルは、ゲートウェイ(Microsoft Windowsの
ORACLE_HOME\dg4mq\sample\putsample.sqlおよびUNIXベース・システムのORACLE_HOME/dg4mq/sample/putsample.sql)を使用してサンプルとして提供され、32767バイトより短いメッセージを送信します:
例A-2 putsample.sql
--
-- Copyright Oracle, 2005 All Rights Reserved.
--
-- NAME
-- putsample.sql
--
-- DESCRIPTION
--
-- Specify the database link name you created for the gateway. To do this,
-- replace the database link name 'YOUR_DBLINK_NAME' with the dblink name
-- you chose when the database link was created.
--
-- This script performs a test run for the MQSeries gateway. In this
-- script the queuename is 'YOUR_QUEUE_NAME', replace it with a valid
-- queue name at the queue manager the gateway is configured for.
--
-- NOTES
-- Run the script from the SQL*Plus command line.
--
-- Make the sure the user is granted 'EXECUTE' on package dbms_output
--
SET SERVEROUTPUT ON
DECLARE
objdesc PGM.MQOD;
msgDesc PGM.MQMD;
putOptions PGM.MQPMO;
objectHandle PGM.MQOH;
message raw(255);
BEGIN
objdesc.OBJECTNAME := 'QUEUE1';
objdesc.DBLINKNAME := 'dg4mqdepdblink';
-- Open the queue 'YOUR_QUEUE_NAME' for sending.
PGM.MQOPEN(objdesc, PGM_SUP.MQOO_OUTPUT, objectHandle);
-- Put the message buffer on the queue.
message := '01020304050607080900';
PGM.MQPUT(objectHandle, msgDesc, putOptions, message);
-- Print the message we are putting on the queue
dbms_output.put_line('message put on queue = ' || rawtohex(message));
-- Close the queue again.
PGM.MQCLOSE(objectHandle, PGM_SUP.MQCO_NONE);
EXCEPTION
-- something else went wrong.. tell the user.
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error: Procedural Gateway for IBM MQSeries
verification script failed.');
DBMS_OUTPUT.PUT_LINE(SQLERRM);
PGM.MQCLOSE(objectHandle, PGM_SUP.MQCO_NONE);
END;
/
- 「PGM.MQPMO型定義」
PGM。MQPMOは、MQPUTのmqpmo引数を定義するために使用されます。
PGM.MQPMO型定義
PGM.MQPMOは、MQPUTのmqpmo引数の定義に使用されます。
PGM.MQPMOフィールドのデフォルト値を使用、またはアプリケーションが要求する値にフィールドを変更できます。 たとえば、次のようにしてフィールド値を変更します。
mqpmo.field_name := field_value
説明:
-
mqpmoは、PGM.MQPMOデータ型で、メッセージを処理およびキューに置く方法のオプションおよび制御情報を指定します。 -
field_nameは、PGM.MQPMO型定義のフィールド名です。 必要な数のフィールドを設定できます。 フィールド名および説明の詳細は、表A-5を参照してください。 -
field_valueはfield_nameに割り当てる値です。 値を指定する、またはPGM_SUP定数を使用して、値を割り当てます。
表A-5 PGM.MQPMOフィールド
| フィールド名 | 説明 | PL/SQLデータ型 | 初期値 |
|---|---|---|---|
|
|
|
|
(キューに配置されたメッセージは、Oracleトランザクション・コーディネータにより処理されます。) |
|
|
入力キューのオブジェクト・ハンドルを指定します。 これは、 |
|
|
|
|
返信先キューの解決済の名前を含みます。 これは、キュー・マネージャによって設定される出力フィールドです。 |
|
|
|
|
|
|
|
PGM_SUPパッケージ
PGM_SUPには、ゲートウェイプロシージャおよびPGMタイプ定義で使用する定数および例外定義が含まれています。
- 「PGM.MQGMO値」
これらのトピックは、PGMに関する情報を提供します。MQGMOの値。 - 「PGM.MQMD値」
これらのトピックは、PGMに関する情報を提供します。MQODの値。 - 「PGM.MQOD値」
これらのトピックは、PGMに関する情報を提供します。MQODの値。 - 「PGM.MQPMO値」
これらのトピックは、PGMに関する情報を提供します。MQPMOの値。 - 「MQCLOSE値」
これらのトピックは、MQCLOSEの値に関する情報を提供します。 - 「MQOPEN値」
これらのトピックは、MQOPENの値に関する情報を提供します。 - 「PGMタイプ定義のフィールドの最大長」
これらの定数には、PGMタイプ定義で使用されるフィールドの最大長が含まれます。 - 「エラー・コード定義」
このトピックでは、いくつかのエラー・コード定義について説明します。
PGM.MQGMO値
これらのトピックは、PGMに関する情報を提供します。MQGMOの値。
OPTIONSフィールド
MQGMO_NO_WAIT constant binary_integer := 0; MQGMO_NONE constant binary_integer := 0; MQGMO_WAIT constant binary_integer := 1; MQGMO_SYNCPOINT constant binary_integer := 2; MQGMO_NO_SYNCPOINT constant binary_integer := 4; MQGMO_SET_SIGNAL constant binary_integer := 8; MQGMO_BROWSE_FIRST constant binary_integer := 16; MQGMO_BROWSE_NEXT constant binary_integer := 32; MQGMO_ACCEPT_TRUNCATED_MSG constant binary_integer := 64; MQGMO_MARK_SKIP_BACKOUT constant binary_integer := 128; MQGMO_MSG_UNDER_CURSOR constant binary_integer := 256; MQGMO_LOCK constant binary_integer := 512; MQGMO_UNLOCK constant binary_integer := 1024; MQGMO_BROWSE_MSG_UNDER_CURSOR constant binary_integer := 2048; MQGMO_SYNCPOINT_IF_PERSISTENT constant binary_integer := 4096; MQGMO_FAIL_IF_QUIESCING constant binary_integer := 8192; MQGMO_CONVERT constant binary_integer := 16384; MQGMO_LOGICAL_ORDER constant binary_integer := 32768; MQGMO_COMPLETE_MSG constant binary_integer := 65536; MQGMO_ALL_MSGS_AVAILABLE constant binary_integer := 131072; MQGMO_ALL_SEGMENTS_AVAILABLE constant binary_integer := 262144;
VERSIONフィールド
MQGMO_VERSION_1 constant binary_integer := 1; MQGMO_CURRENT_VERSION constant binary_integer := 1; MQGMO_VERSION_2 constant binary_integer := 2; MQGMO_VERSION_3 constant binary_integer := 3;
MATCHOPTIONSフィールド
MQMO_DEFAULT constant binary_integer := 3; MQMO_NONE constant binary_integer := 0; MQMO_MATCH_MSG_ID constant binary_integer := 1; MQMO_MATCH_CORREL_ID constant binary_integer := 2; MQMO_MATCH_GROUP_ID constant binary_integer := 4; MQMO_MATCH_MSG_SEQ_NUMBER constant binary_integer := 8; MQMO_MATCH_OFFSET constant binary_integer := 16; MQMO_MATCH_MSG_TOKEN constant binary_integer := 32;
PGM.MQMD値
これらのトピックは、PGMに関する情報を提供します。MQODの値。
CODEDCHARSETIDフィールド
PGM_SUP.MQCCSI_DEFAULT CONSTANT BINARY_INTEGER := 0; PGM_SUP.MQCCSI_Q_MGR CONSTANT BINARY_INTEGER := 0; PGM_SUP.MQCCSI_EMBEDDED CONSTANT BINARY_INTEGER := -1;
ENCODINGフィールド、バイナリ整数の値
PGM_SUP.MQENC_INTEGER_UNDEFINED CONSTANT RAW(4) := '00000000'; PGM_SUP.MQENC_INTEGER_NORMAL CONSTANT RAW(4) := '00000001'; PGM_SUP.MQENC_INTEGER_REVERSED CONSTANT RAW(4) := '00000002';
ENCODINGフィールド、浮動小数点数の値
PGM_SUP.MQENC_FLOAT_UNDEFINED CONSTANT RAW(4) := '00000000'; PGM_SUP.MQENC_FLOAT_IEEE_NORMAL CONSTANT RAW(4) := '00000100'; PGM_SUP.MQENC_FLOAT_IEEE_REVERSED CONSTANT RAW(4) := '00000200'; PGM_SUP.MQENC_FLOAT_S390 CONSTANT RAW(4) := '00000300';
ENCODINGフィールド、マスク値
PGM_SUP.MQENC_INTEGER_MASK CONSTANT RAW(4) := '0000000f'; PGM_SUP.MQENC_DECIMAL_MASK CONSTANT RAW(4) := '000000f0'; PGM_SUP.MQENC_FLOAT_MASK CONSTANT RAW(4) := '00000f00'; PGM_SUP.MQENC_RESERVED_MASK CONSTANT RAW(4) := 'fffff000';
ENCODINGフィールド、パックド10進整数の値
PGM_SUP.MQENC_DECIMAL_UNDEFINED CONSTANT RAW(4) := '00000000'; PGM_SUP.MQENC_DECIMAL_NORMAL CONSTANT RAW(4) := '00000010'; PGM_SUP.MQENC_DECIMAL_REVERSED CONSTANT RAW(4) := '00000020';
EXPIRYフィールド
PGM_SUP.MQEI_UNLIMITED CONSTANT BINARY_INTEGER := -1; PGM_SUP.MQEI_MIN_EXPIRY CONSTANT BINARY_INTEGER := 0; PGM_SUP.MQEI_UNITS CONSTANT BINARY_INTEGER := 10;
FEEDBACKフィールド
PGM_SUP.MQFB_NONE CONSTANT BINARY_INTEGER := 0; PGM_SUP.MQFB_SYSTEM_FIRST CONSTANT BINARY_INTEGER := 1; PGM_SUP.MQFB_EXPIRATION CONSTANT BINARY_INTEGER := 258; PGM_SUP.MQFB_COA CONSTANT BINARY_INTEGER := 259; PGM_SUP.MQFB_COD CONSTANT BINARY_INTEGER := 260; PGM_SUP.MQFB_QUIT CONSTANT BINARY_INTEGER := 256; PGM_SUP.MQFB_CHANNEL_COMPLETED CONSTANT BINARY_INTEGER := 262; PGM_SUP.MQFB_CHANNEL_FAIL_RETRY CONSTANT BINARY_INTEGER := 263; PGM_SUP.MQFB_CHANNEL_FAIL CONSTANT BINARY_INTEGER := 264; PGM_SUP.MQFB_APPL_CANNOT_BE_STARTED CONSTANT BINARY_INTEGER := 265; PGM_SUP.MQFB_TM_ERROR CONSTANT BINARY_INTEGER := 266; PGM_SUP.MQFB_APPL_TYPE_ERROR CONSTANT BINARY_INTEGER := 267; PGM_SUP.MQFB_STOPPED_BY_MSG_EXIT CONSTANT BINARY_INTEGER := 268; PGM_SUP.MQFB_XMIT_Q_MSG_ERROR CONSTANT BINARY_INTEGER := 271; PGM_SUP.MQFB_SYSTEM_LAST CONSTANT BINARY_INTEGER := 65535; PGM_SUP.MQFB_APPL_FIRST CONSTANT BINARY_INTEGER := 65536; PGM_SUP.MQFB_APPL_LAST CONSTANT BINARY_INTEGER := 999999999;
FORMATフィールド
MQFMT_NONE constant char(8) := ' '; MQFMT_ADMIN constant char(8) := 'MQADMIN '; MQFMT_CHANNEL_COMPLETED constant char(8) := 'MQCHCOM '; MQFMT_CICS constant char(8) := 'MQCICS '; MQFMT_COMMAND_1 constant char(8) := 'MQCMD1 '; MQFMT_COMMAND_2 constant char(8) := 'MQCMD2 '; MQFMT_DEAD_LETTER_HEADER constant char(8) := 'MQDEAD '; MQFMT_DIST_HEADER constant char(8) := 'MQHDIST '; MQFMT_EVENT constant char(8) := 'MQEVENT '; MQFMT_IMS constant char(8) := 'MQIMS '; MQFMT_IMS_VAR_STRING constant char(8) := 'MQIMSVS '; MQFMT_MD_EXTENTION constant char(8) := 'MQHMDE '; MQFMT_PCF constant char(8) := 'MQPCF '; MQFMT_REF_MSG_HEADER constant char(8) := 'MQHREF '; MQFMT_STRING constant char(8) := 'MQSTR '; MQFMT_TRIGGER constant char(8) := 'MQTRIG '; MQFMT_WORK_INFO_HEADER constant char(8) := 'MQHWIH '; MQFMT_XMIT_Q_HEADER constant char(8) := 'MQXMIT ';
MSGTYPEフィールド
PGM_SUP.MQMT_SYSTEM_FIRST CONSTANT BINARY_INTEGER := 1; PGM_SUP.MQMT_REQUEST CONSTANT BINARY_INTEGER := 1; PGM_SUP.MQMT_REPLY CONSTANT BINARY_INTEGER := 2; PGM_SUP.MQMT_DATAGRAM CONSTANT BINARY_INTEGER := 8; PGM_SUP.MQMT_REPORT CONSTANT BINARY_INTEGER := 4; PGM_SUP.MQMT_SYSTEM_LAST CONSTANT BINARY_INTEGER := 65535; PGM_SUP.MQMT_APPL_FIRST CONSTANT BINARY_INTEGER := 65536; PGM_SUP.MQMT_APPL_LAST CONSTANT BINARY_INTEGER := 999999999;
PERSISTENCEフィールド
PGM_SUP.MQPER_PERSISTENT CONSTANT BINARY_INTEGER := 1; PGM_SUP.MQPER_NOT_PERSISTENT CONSTANT BINARY_INTEGER := 0; PGM_SUP.MQPER_PERSISTENCE_AS_Q_DEF CONSTANT BINARY_INTEGER := 2;
PRIORITYフィールド
PGM_SUP.MQPRI_PRIORITY_AS_Q_DEF CONSTANT BINARY_INTEGER := -1; PGM_SUP.MQPRI_MIN_PRIORITY CONSTANT BINARY_INTEGER := 0; PGM_SUP.MQPRI_MAX_PRIORITY CONSTANT BINARY_INTEGER := 9;
PUTAPPLTYPEフィールド
MQAT_UNKNOWN constant binary_integer := -1; MQAT_NO_CONTEXT constant binary_integer := 0; MQAT_CICS constant binary_integer := 1; MQAT_MVS constant binary_integer := 2; MQAT_OS390 constant binary_integer := 2; MQAT_IMS constant binary_integer := 3; MQAT_OS2 constant binary_integer := 4; MQAT_DOS constant binary_integer := 5; MQAT_AIX constant binary_integer := 6; MQAT_UNIX constant binary_integer := 6; MQAT_QMGR constant binary_integer := 7; MQAT_OS400 constant binary_integer := 8; MQAT_WINDOWS constant binary_integer := 9; MQAT_CICS_VSE constant binary_integer := 10; MQAT_WINDOWS_NT constant binary_integer := 11; MQAT_VMS constant binary_integer := 12; MQAT_GUARDIAN constant binary_integer := 13; MQAT_NSK constant binary_integer := 13; MQAT_VOS constant binary_integer := 14; MQAT_IMS_BRIDGE constant binary_integer := 19; MQAT_XCF constant binary_integer := 20; MQAT_CICS_BRIDGE constant binary_integer := 21; MQAT_NOTES_AGENT constant binary_integer := 22; MQAT_USER_FIRST constant binary_integer := 65536; MQAT_USER_LAST constant binary_integer := 999999999; MQAT_DEFAULT constant binary_integer := 6;
REPORTフィールド
MQRO_NEW_MSG_ID constant raw(4) := '00000000'; MQRO_COPY_MSG_ID_TO_CORREL_ID constant raw(4) := '00000000'; MQRO_DEAD_LETTER_Q constant raw(4) := '00000000'; MQRO_NONE constant raw(4) := '00000000'; MQRO_PAN constant raw(4) := '00000001'; MQRO_NAN constant raw(4) := '00000002'; MQRO_PASS_CORREL_ID constant raw(4) := '00000040'; MQRO_PASS_MSG_ID constant raw(4) := '00000080'; MQRO_COA constant raw(4) := '00000100'; MQRO_COA_WITH_DATA constant raw(4) := '00000300'; MQRO_COA_WITH_FULL_DATA constant raw(4) := '00000700'; MQRO_COD constant raw(4) := '00000800'; MQRO_COD_WITH_DATA constant raw(4) := '00001800'; MQRO_COD_WITH_FULL_DATA constant raw(4) := '00003800'; MQRO_EXPIRATION constant raw(4) := '00200000'; MQRO_EXPIRATION_WITH_DATA constant raw(4) := '00600000'; MQRO_EXPIRATION_WITH_FULL_DATA constant raw(4) := '00E00000'; MQRO_EXCEPTION constant raw(4) := '01000000'; MQRO_EXCEPTION_WITH_DATA constant raw(4) := '03000000'; MQRO_EXCEPTION_WITH_FULL_DATA constant raw(4) := '07000000'; MQRO_DISCARD_MSG constant raw(4) := '08000000';
VERSIONフィールド
MQMD_VERSION_1 constant binary_integer := 1; MQMD_VERSION_2 constant binary_integer := 2; MQMD_CURRENT_VERSION constant binary_integer := 2;
PGM.MQOD値
これらのトピックは、PGMに関する情報を提供します。MQODの値。
OBJECTTYPEフィールド
PGM_SUP.MQOT_Q CONSTANT BINARY_INTEGER := 1; PGM_SUP.MQOT_PROCESS CONSTANT BINARY_INTEGER := 3; PGM_SUP.MQOT_Q_MGR CONSTANT BINARY_INTEGER := 5; PGM_SUP.MQOT_CHANNEL CONSTANT BINARY_INTEGER := 6;
OBJECTTYPEフィールド、拡張値
MQOT_ALL constant binary_integer := 1001; MQOT_ALIAS_Q constant binary_integer := 1002; MQOT_MODEL_Q constant binary_integer := 1003; MQOT_LOCAL_Q constant binary_integer := 1004; MQOT_REMOTE_Q constant binary_integer := 1005; MQOT_SENDER_CHANNEL constant binary_integer := 1007; MQOT_SERVER_CHANNEL constant binary_integer := 1008; MQOT_REQUESTER_CHANNEL constant binary_integer := 1009; MQOT_RECEIVER_CHANNEL constant binary_integer := 1010; MQOT_CURRENT_CHANNEL constant binary_integer := 1011; MQOT_SAVED_CHANNEL constant binary_integer := 1012; MQOT_SVRCONN_CHANNEL constant binary_integer := 1013; MQOT_CLNTCONN_CHANNEL constant binary_integer := 1014;
PGM.MQPMO値
これらのトピックは、PGMに関する情報を提供します。MQPMOの値。
OPTIONSフィールド
MQPMO_NONE constant binary_integer := 0; MQPMO_SYNCPOINT constant binary_integer := 2; MQPMO_NO_SYNCPOINT constant binary_integer := 4; MQPMO_DEFAULT_CONTEXT constant binary_integer := 32; MQPMO_NEW_MSG_ID constant binary_integer := 64; MQPMO_NEW_CORREL_ID constant binary_integer := 128; MQPMO_PASS_IDENTITY_CONTEXT constant binary_integer := 256; MQPMO_PASS_ALL_CONTEXT constant binary_integer := 512; MQPMO_SET_IDENTITY_CONTEXT constant binary_integer := 1024; MQPMO_SET_ALL_CONTEXT constant binary_integer := 2048; MQPMO_ALTERNATE_USER_AUTHORITY constant binary_integer := 4096; MQPMO_FAIL_IF_QUIESCING constant binary_integer := 8192; MQPMO_NO_CONTEXT constant binary_integer := 16384; MQPMO_LOGICAL_ORDER constant binary_integer := 32768;
MQOPEN値
これらのトピックは、MQOPENの値に関する情報を提供します。
options引数
MQOO_BIND_AS_Q_DEF constant binary_integer := 0; MQOO_INPUT_AS_Q_DEF constant binary_integer := 1; MQOO_INPUT_SHARED constant binary_integer := 2; MQOO_INPUT_EXCLUSIVE constant binary_integer := 4; MQOO_BROWSE constant binary_integer := 8; MQOO_OUTPUT constant binary_integer := 16; MQOO_INQUIRE constant binary_integer := 32; MQOO_SET constant binary_integer := 64; MQOO_SAVE_ALL_CONTEXT constant binary_integer := 128; MQOO_PASS_IDENTITY_CONTEXT constant binary_integer := 256; MQOO_PASS_ALL_CONTEXT constant binary_integer := 512; MQOO_SET_IDENTITY_CONTEXT constant binary_integer := 1024; MQOO_SET_ALL_CONTEXT constant binary_integer := 2048; MQOO_ALTERNATE_USER_AUTHORITY constant binary_integer := 4096; MQOO_FAIL_IF_QUIESCING constant binary_integer := 8192; MQOO_BIND_ON_OPEN constant binary_integer := 16384; MQOO_BIND_NOT_FIXED constant binary_integer := 32768; MQOO_RESOLVE_NAMES constant binary_integer := 65536;
PGMタイプ定義のフィールドの最大長
これらの定数は、PGM型定義で使用するフィールドの許容最大長を含みます。
たとえば、PGM_SUP.MQ_ACCOUNTING_TOKEN_LENGTHは、PGM.MQMD.ACCOUNTINGTOKENの最大長を32文字に指定します。
MQ_ABEND_CODE_LENGTH constant binary_integer := 4; MQ_ACCOUNTING_TOKEN_LENGTH constant binary_integer := 32; MQ_APPL_IDENTITY_DATA_LENGTH constant binary_integer := 32; MQ_APPL_ORIGIN_DATA_LENGTH constant binary_integer := 4; MQ_ATTENTION_ID_LENGTH constant binary_integer := 4; MQ_AUTHENTICATOR_LENGTH constant binary_integer := 8; MQ_CANCEL_CODE_LENGTH constant binary_integer := 4; MQ_CLUSTER_NAME_LENGTH constant binary_integer := 48; MQ_CORREL_ID_LENGTH constant binary_integer := 24; MQ_CREATION_DATE_LENGTH constant binary_integer := 12; MQ_CREATION_TIME_LENGTH constant binary_integer := 8; MQ_DATE_LENGTH constant binary_integer := 12; MQ_EXIT_NAME_LENGTH constant binary_integer := 128; MQ_FACILITY_LENGTH constant binary_integer := 8; MQ_FACILITY_LIKE_LENGTH constant binary_integer := 4; MQ_FORMAT_LENGTH constant binary_integer := 8; MQ_FUNCTION_LENGTH constant binary_integer := 4; MQ_GROUP_ID_LENGTH constant binary_integer := 24; MQ_LTERM_OVERRIDE_LENGTH constant binary_integer := 8; MQ_MFS_MAP_NAME_LENGTH constant binary_integer := 8; MQ_MSG_HEADER_LENGTH constant binary_integer := 4000; MQ_MSG_ID_LENGTH constant binary_integer := 24; MQ_MSG_TOKEN_LENGTH constant binary_integer := 16; MQ_NAMELIST_DESC_LENGTH constant binary_integer := 64; MQ_NAMELIST_NAME_LENGTH constant binary_integer := 48; MQ_OBJECT_INSTANCE_ID_LENGTH constant binary_integer := 24; MQ_NAME_LENGTH constant binary_integer := 48; MQ_PROCESS_APPL_ID_LENGTH constant binary_integer := 256; MQ_PROCESS_DESC_LENGTH constant binary_integer := 64; MQ_PROCESS_ENV_DATA_LENGTH constant binary_integer := 128; MQ_PROCESS_NAME_LENGTH constant binary_integer := 48; MQ_PROCESS_USER_DATA_LENGTH constant binary_integer := 128; MQ_PUT_APPL_NAME_LENGTH constant binary_integer := 28; MQ_PUT_DATE_LENGTH constant binary_integer := 8; MQ_PUT_TIME_LENGTH constant binary_integer := 8; MQ_Q_DESC_LENGTH constant binary_integer := 64; MQ_Q_MGR_DESC_LENGTH constant binary_integer := 64; MQ_Q_MGR_IDENTIFIER_LENGTH constant binary_integer := 48; MQ_Q_MGR_NAME_LENGTH constant binary_integer := 48; MQ_Q_NAME_LENGTH constant binary_integer := 48; MQ_REMOTE_SYS_ID_LENGTH constant binary_integer := 4; MQ_SERVICE_NAME_LENGTH constant binary_integer := 32; MQ_SERVICE_STEP_LENGTH constant binary_integer := 8; MQ_START_CODE_LENGTH constant binary_integer := 4; MQ_STORAGE_CLASS_LENGTH constant binary_integer := 8; MQ_TIME_LENGTH constant binary_integer := 8; MQ_TRAN_INSTANCE_ID_LENGTH constant binary_integer := 16; MQ_TRANSACTION_ID_LENGTH constant binary_integer := 4; MQ_TP_NAME_LENGTH constant binary_integer := 64; MQ_TRIGGER_DATA_LENGTH constant binary_integer := 64; MQ_USER_ID_LENGTH constant binary_integer := 12;
エラー・コード定義
このトピックでは、いくつかのエラー・コード定義について説明します。
エラー・コード29400: データ・カートリッジ・エラーが発生しました
このエラー・コードは、DG4MQにインプリメントされたMQIコードが失敗したことを示します。 原因の詳細は、IBMのWebSphereリファレンス・マニュアルを参照し、opcode、その完了コードおよび理由コードを検索してください。
MQI opcode failed. completion code=xxxx. reason code=xxxx.
例A-3 test.sql
--
-- Copyright Oracle, 2005 All Rights Reserved.
--
-- NAME
-- test.sql
--
-- DESCRIPTION
--
-- Specify the database link name you created for the gateway. To do this,
-- replace the database link name 'YOUR_DBLINK_NAME' with the dblink name
-- you chose when the database link was created.
--
-- This script performs a test run for the MQSeries gateway. In this
-- script the queuename is 'YOUR_QUEUE_NAME', replace queuename with
-- a valid queue name at the queue manager the gateway is configured
-- for.
--
-- First the script puts a raw message of 10 bytes on the specified
-- queue.
--
-- When successfully completed the put operation, the script does a
-- get on the same queue to read the message back.
--
-- The contents of both messages put and retrieved from the queue are
-- printed to standard out for verification by the user.
--
-- NOTES
-- Run the script from the SQL*Plus command line.
--
-- Make the sure the user is granted 'EXECUTE' on package dbms_output
--
set serveroutput on
declare
objdesc PGM.MQOD;
hobj PGM.MQOH;
msgdesc PGM.MQMD;
putmsgopts PGM.MQPMO;
getmsgopts PGM.MQGMO;
options binary_integer;
putbuffer raw(10) := '10203040506070809000';
getbuffer raw(10);
begin
--
-- Print the message we are putting on the queue
--
dbms_output.put_line('message put on queue = ' || rawtohex(putbuffer));
--
-- Specify queue name and dblink name (replace with proper names).
--
objdesc.objectname := 'YOUR_QUEUE_NAME';
objdesc.dblinkname := 'YOUR_DBLINK_NAME';
--
-- Specify a put operation.
--
options := pgm_sup.MQOO_OUTPUT;
--
-- Open the queue.
--
PGM.MQOPEN(objdesc, options, hobj);
--
-- Put the message buffer on the queue.
--
PGM.MQPUT(hobj, msgdesc, putmsgopts, putbuffer);
--
-- Define close options.
--
options := pgm_sup.MQCO_NONE;
--
-- Close queue.
--
PGM.MQCLOSE(hobj, options);
--
-- Specify a get operation.
--
options := pgm_sup.MQOO_INPUT_AS_Q_DEF;
--
-- Open queue.
--
PGM.MQOPEN(objdesc, options, hobj);
--
-- Get message from the queue.
--
getmsgopts.msglength := 10;
PGM.MQGET(hobj, msgdesc, getmsgopts, getbuffer);
--
-- Define close options.
--
options := pgm_sup.MQCO_NONE;
--
-- Close the queue again.
--
PGM.MQCLOSE(hobj, options);
--
-- Print the result
--
dbms_output.put_line('message read back = ' || rawtohex(getbuffer));
exception
--
-- When no more messages... tell the user and close the queue.
--
when pgm_sup.NO_MORE_MESSAGES then
dbms_output.put_line('Warning: No message found on the queue');
options := pgm_sup.MQCO_NONE;
PGM.MQCLOSE(hobj, options);
--
-- something else went wrong.. tell the user.
--
when others then
dbms_output.put_line('Error: Procedural Gateway for IBM MQSeries verification
script failed.');
dbms_output.put_line(SQLERRM);
end;
/