プライマリ・コンテンツに移動
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
12c リリース1 (12.1)
B71281-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

274 JMSタイプ

PL/SQLユーザーは、DBMS_AQパッケージを使用して、JMSキューのメッセージをエンキューおよびデキューできます。この章で説明するJMSタイプのメンバー、静的ファンクションおよびプロシージャを使用して、デキューされたJMSメッセージのエンキューまたは解釈にJMSメッセージを移入する必要があります。

この章では、次の項目について説明します。

JMSタイプの使用方法

概要

Java Message Service(JMS)は、メッセージング・システムへのアクセスに使用される、一般的に普及している標準的なインタフェースです。Oracle JMS(OJMS)は、Oracle Streams Advanced Queuing(AQ)およびリレーショナル・データベース・システム(RDBMS)に基づいてJMSを実装します。メッセージは、OJMS固有のADTとしてキューに格納されます。Javaクライアントは、OJMSパッケージを使用して、これらのメッセージをエンキュー、デキューおよび操作します。

これに対し、PL/SQLユーザーは、DBMS_AQパッケージを使用してJMSメッセージをエンキューおよびデキューし、この章で説明するメンバー・ファンクションを使用してそれらを移入し、解釈します。Oracle Databaseアドバンスト・キューイングは、次のJMS ADTに対してこのようなメンバー・ファンクションを提供します。

  • aq$_jms_header

  • aq$_jms_message

  • aq$_jms_text_message

  • aq$_jms_bytes_message

  • aq$_jms_map_message

  • aq$_jms_stream_message

これらの移入および解釈のメンバー・ファンクション以外にも、次のメンバー・ファンクションを提供しています。

  • aq$_jms_messageとその他のメッセージのADT間でのキャスト

  • JMSセレクタから同等のOracle Databaseアドバンスト・キューイングのルールへ変換するPL/SQLストアド・プロシージャ

セキュリティ・モデル

PUBLICには、次のJMSタイプに対するEXECUTE権限が付与されます。

  • SYS.AQ$_JMS_MESSAGEタイプ

  • SYS.AQ$_JMS_TEXT_MESSAGEタイプ

  • SYS.AQ$_JMS_BYTES_MESSAGEタイプ

  • SYS.AQ$_JMS_MAP_MESSAGEタイプ

  • SYS.AQ$_JMS_STREAM_MESSAGEタイプ

  • SYS.AQ$_JMS_OBJECT_MESSAGEタイプ

  • SYS.AQ$_JMS_NAMEARRAYタイプ

  • SYS.AQ$_JMS_VALUEタイプ

  • SYS.AQ$_JMS_EXCEPTIONタイプ

JavaとPL/SQLのデータ・タイプ

データ・タイプは、PL/SQLとJavaの間で1対1に対応しません。

BYTESHORTなど、一部のJavaタイプはPL/SQLに表示されません。PL/SQLタイプのINTは、これらのタイプを表示するために選択されました。Java BYTEまたはSHORT値の保持を目的としたPL/SQL INT値がその対象範囲を超えている場合、範囲外エラーがスローされます。

他のJavaタイプは、PL/SQLにおいて様々な機能を備えた複数のJavaタイプを持っています。Java文字列はVARCHAR2CLOBの両方で表示できます。VARCHAR2には最大4000バイトの制限があります。マップ、ストリームおよびバイト・メッセージ・タイプからTEXTデータを取り出すと、常にCLOBが戻されます。マップ、ストリームおよびバイト・メッセージ・タイプを更新すると、VARCHAR2またはCLOBのいずれかを送信できます。

同様に、Java BYTE ARRAYRAWおよびBLOBの両方で表示できます。RAWの最大サイズは32767です。マップ、ストリームおよびバイト・メッセージ・タイプからBYTE ARRAYデータを取り出すと、常にBLOBが戻されます。マップ、ストリームおよびバイト・メッセージ・タイプを更新すると、RAWまたはBLOBのいずれかを送信できます。


関連項目:

JMS仕様3.11.3、StreamMessageおよびMapMessageによる変換

Oracle Database 10g の新しいJMSサポート

Oracle Database 10gでは、OJMS PL/SQLユーザー向けに、新しいAQ$_JMS_VALUE ADTがSYSスキーマに追加されました。これは、Java一般オブジェクト・クラスObjectの模倣を目的として、aq$_jms_stream_messageread_objectプロシージャおよびaq$_jms_map_messageget_objectプロシージャを実装するために特に使用されます。AQ$_JMS_VALUE ADTは、JMS StreamMessageおよびMapMessageを格納できるあらゆるデータ・タイプを表現できます。

コレクションADT AQ$_JMS_NAMEARRAYは、MapMessagegetNamesメソッド用として追加されました。これは、名前の配列を格納します。

今回のリリースでは、スローされたJava例外を表示するために、PL/SQL側のOJMS JAVAストアド・プロシージャにADT AQ$_JMS_EXCEPTIONが追加されました。これにより、OJMSストアド・プロシージャを使用してスローされたJava例外を取り出し、PL/SQL側で分析できます。

バイト、ストリームおよびマップ・メッセージの詳細

Oracleは、AQ$_MAP_MESSAGEAQ$_JMS_STREAM_MESSAGEおよびAQ$_JMS_BYTES_MESSAGEタイプの一部のプロシージャを実装するために、Javaストアド・プロシージャを使用します。これらのタイプでは、AQ$_JMS_TEXT_MESSAGEタイプとは異なる共通の機能を備えています。この項では、この共通の機能について説明します。

この項では、次の項目について説明します。

Oracle Databaseアドバンスト・キューイングのメッセージをエンコードおよびデコードするJavaストアド・プロシージャの使用

マップ、ストリーム、バイトが他のメッセージと最も異なるのは、メッセージ・ペイロードがJAVAによりバイト・ストリームとしてエンコードされる点です。つまり、PL/SQLでこのようなペイロードの取出しおよび更新をするには、Oracle JAVAストアド・プロシージャが必要です。

処理中、メッセージ・ペイロードは2つの場所に格納されます。PL/SQL側ではJMSメッセージADTのデータ・メンバーとして格納され、Jserv側では静的な変数として格納されます。(JservはOracle Database内のJVMです。)ペイロードが処理されると、ペイロード・データは最初にJserv側で静的な変数に変換されます。静的な変数が初期化されると、メッセージ・ペイロードに関するその後のすべての更新は、この静的な変数に基づいて実行されます。処理の最後に、ペイロード・データはPL/SQL側にフラッシュされます。

Oracleには、Jservの静的な変数の状態を保持し、これらのメンバー・プロシージャが呼び出されたときにルールを実行するメンバー・プロシージャが備わっています。これらのプロシージャは、次のADTに含まれています。

  • aq$_jms_bytes_message

  • aq$_jms_map_message

  • aq$_jms_stream_message

Jservの静的な変数の初期化

ペイロード・データ操作のためのコールをする前に、Jservの静的な変数を適切に初期化する必要があります。初期化するには、prepareまたはclear_bodyプロシージャをコールします。prepareプロシージャはPL/SQL ADTのペイロード・データを使用して静的な変数を初期化し、clear_bodyプロシージャは静的な変数を空のペイロード(空のハッシュテーブルまたはストリーム)に初期化します。


注意:

他のコールを行う前に、prepareまたはclear_bodyプロシージャをコールしてJservの静的な変数を適切に初期化することが重要です。通常、最初に2つのメソッドがコールされます。ただし、1つのメッセージに対し、何度でもコールできます。これら2つのメソッドのコールでは、flushプロシージャを最初にコールしないと、メッセージに対して行われた更新がすべて無効になります。

PL/SQLへのペイロード・データの引戻し

flushプロシージャをコールすると、Jservの静的な変数に加えられた変更がPL/SQL ADTに同期化されます。加えられた変更をADTペイロードに反映する場合は、flushコールを行う必要があります。ADTペイロードにかかわるため、変更をADTに戻して同期化させることが重要です。

静的な変数のガベージ・コレクション

cleanプロシージャは、静的な変数のガベージ・コレクションを実行します。これにより、クリーンアップが行われ、JVMメモリーが解放されます。メッセージの処理が完了した直後にこのプロシージャをコールすると、メモリー・リークを防止できます。

メッセージ・ストアの使用: 静的な変数のコレクション

Oracleは、単一の静的な変数ではなく、静的な変数のコレクションを使用して、Jserv側のメッセージ・ペイロードを処理します。このコレクションは、メッセージ・ストアと呼ばれます。マップ、バイトまたはストリーム・メッセージの各タイプは、1つのセッション内に固有のメッセージ・ストアを保有します。

Oracleは、操作IDパラメータを使用して、このメッセージ・ストア内で動作する静的な変数を適切に検索します。prepareclear_bodyなどのコールを初期化すると、操作IDが与えられます。このIDは、後のメッセージへのアクセスで使用されます。

メッセージの処理が完了したら、操作IDを使用してcleanプロシージャをコールし、メッセージ・ストアをクリーンアップする必要があります。これにより、メモリー・リークを防止できます。メッセージADT aq$_jms_bytes_messageaq$_jms_map_messageおよびaq$_jms_stream_messageclean_all静的プロシージャは、対応するメッセージ・ストアの静的な変数をすべてクリーンアップします。

通常のコール順序

この項では、メッセージの取出しおよび移入に通常かかわるプロシージャについて説明します。

メッセージを取り出すプロシージャは、通常、次のとおりです。

  1. メッセージのprepareをコールします。

    操作IDを指定していない場合、このコールにより決定します。

  2. 与えられた操作IDを使用し、取出しプロシージャを複数回コールします。

  3. 与えられた操作IDを使用し、cleanプロシージャを複数回コールします。

メッセージを移入するプロシージャは、通常、次のとおりです。

  1. メッセージのclear_bodyをコールします。

    aq$_jms_map_messageでは、prepareをコールすることにより、既存のペイロードに基づいたメッセージの更新もできます。操作IDを指定していない場合、このコールにより決定します。

  2. 与えられた操作IDを使用し、更新プロシージャを複数回コールします。

  3. 与えられた操作IDを使用し、flushメソッドをコールします。

  4. 与えられた操作IDを使用し、cleanプロシージャを複数回コールします。

ストリームおよびバイト・メッセージに対する読取り専用および書込み専用モードの実行

メッセージを受信すると、JMS仕様に従い、その本文は読取り専用となります。clear_bodyメソッドをコールすると、この本文への書込みができます。このメソッドは、その時点のメッセージ本文を消去し、メッセージ本文を空に設定します。

OJMS JAVA APIは、JMS仕様のルールに基づいています。ただし、JMSメッセージADTをPL/SQLで更新する場合は、ルールが選択的に実行されます。

  • マップ・メッセージ

    既存のマップ・ペイロードの最上位にエントリを追加するとペイロードの更新に便利なため、制約が緩和されます。つまり、マップ・メッセージには読取り専用または書込み専用モードがありません。

  • ストリームおよびバイト・メッセージ

    これらのペイロードではデータの読取りおよび書込みの際にストリームを使用するため、制約は緩和されません。ストリームの途中でペイロードを更新することは困難です。ストリームおよびバイト・メッセージのペイロードを処理する場合、読取り専用または書込み専用モードとなります。prepareプロシージャをコールすると、読取り専用モードでメッセージ・ペイロードが初期化されます。clear_bodyプロシージャをコールすると、書込み専用モードでメッセージ・ペイロードが初期化されます。

    resetプロシージャをコールすると、ストリームの開始位置にポインタがリセットされ、モードが書込み専用から読取り専用に切り替えられます。resetプロシージャをコールした場合、メッセージ・ペイロードに加えられた変更はJservの静的な変数に保存されます。

    それに対し、prepareプロシージャは、PL/SQL ADTのペイロードでJservの静的な変数にあるメッセージ・ペイロードを上書きします。

    Oracleには、モードを問い合せるためのget_modeメンバー・ファンクションがあります。

バイトおよびストリーム・メッセージの違い

バイト・メッセージのメンバー・ファンクションは、ストリーム・メッセージのメンバー・ファンクションと異なります。ストリーム・メッセージはJava ObjectOutputStreamによりエンコードされ、バイト・メッセージはJava DataOutputStreamによりエンコードされます。ストリーム・メッセージでは、基本的なタイプはJavaオブジェクトとして書込みおよび読取りされますが、バイト・メッセージではDataOutputStreamのエンコーディング・メカニズムに応じてRAWバイトとして書込みおよび読取りされます。

ストリーム・メッセージでは、read_bytesメソッドが対応するwrite_bytesメソッドにより書き込まれたバイト配列フィールドの末尾まで、バイトのストリーム上で動作します。バイト・メッセージのread_bytesメソッドは、バイト・ストリーム全体の末尾まで、バイトのストリーム上で動作します。読取りの長さを区別するために、aq$_bytes_messageread_bytesメンバー・プロシージャがlengthパラメータも必要とするのはこのためです。

バイト・メッセージはタイプ変換をサポートしていないため、バイト・メッセージによるタイプ変換エラーは発生しません。

get_unsigned_byteおよびget_unsigned_shortメソッドはバイト・メッセージでは使用できますが、ストリーム・メッセージでは使用できません。これは、ストリーム・メッセージがJavaオブジェクトを読み取るのに対し、符号なしバイトまたは符号なしショートのJavaオブジェクトが存在しないためです。

read_stringおよびwrite_stringメソッドは、バイト・メッセージには使用できません。バイト・メッセージADTは、一部で文字エンコーディングが必要です。utf-8エンコーディングをサポートするread_utfおよびwrite_utfメソッドを備えています。


注意:

バイト・メッセージにより記述されたデータはすべて、基本にDataOutputStreamを使用します。データからバイトへのエンコードの詳細は、JDK APIのマニュアルJavaSoft.comを参照してください。

バイト、マップおよびストリーム・メッセージのRAWバイトとしての取得および設定

バイト、マップおよびストリーム・メッセージ・タイプは、RAWまたはBLOBとしてデータベースに格納されます。Oracle Databaseアドバンスト・キューイングの今回のリリースでは、次のメンバー・ファンクションにより、解釈を省略して、ペイロードをRAWバイトとして設定および取得します。

set_bytes(payload IN BLOB)
set_bytes(payload IN RAW)
get_bytes(payload OUT BLOB)
get_bytes(payload OUT RAW) 

Oracle9i リリース2(9.2)では、これらのファンクションはバイト・メッセージ用に提供されていました。

一般的メッセージと固有メッセージのアップキャストおよびダウンキャスト

OJMS ADT aq$_jms_messageは、同じOracle Databaseアドバンスト・キューイングのキューに異なるタイプのメッセージを格納した、一般的なメッセージを表示する場合に使用されます。Oracle Databaseアドバンスト・キューイングは、このADTと特定のメッセージ・タイプのADT間のアップキャストおよびダウンキャストをサポートすることによって、aq$_jms_messageの取得および移入をサポートしています。

aq$_jms_messageを読み取るには、最初に、そのmessage_typeフィールドに基づいて、固有のメッセージ・タイプにダウンキャストする必要があります。

aq$_jms_messageを移入するには、固有のメッセージをまず移入し、それをaq$_jms_messageにアップキャストする必要があります。これにより、他の固有メッセージのADTのすべてのメンバー・ファンクションが、このADTにコピーされることを防ぎます。また、このADTの操作と他の固有メッセージのADTの操作の一貫性が保証されます。

JMSタイプのエラー・レポート

表274-1に、Oracle JMSタイプに関連するエラーを示します。

表274-1 Oracle JMSタイプのエラー

ORAエラー番号 dbms_jms_plsqlパッケージの定数 説明

ORA-24190

ERROR_DATA_OVERFLOW

ペイロード・データのサイズが出力パラメータの許容範囲を超えています。たとえば、aq$_jms_text_messageVARCHAR2パラメータを持つget_textプロシージャや、aq$_jms_text_messageRAWパラメータを持つget_bytesプロシージャなどです。

ORA-24191

ERROR_PROP_NAME_EXIST

すでに存在しているプロパティを設定しようとしています。

ORA-24192

ERROR_PROP_NAME_NULL

プロパティ名がNULLのままプロパティを設定しようとすると発生します。

ORA-24193

ERROR_EXCEED_RANGE

PL/SQL数値タイプがJavaタイプの有効範囲を超えています。たとえば、set_byte_propertyaq$_jms_head ADTのset_short_propertyaq$_jms_map_message ADTのset_byteset_shortaq$_jms_stream_messagewrite_bytewrite_shortおよびaq$_jms_bytes_message ADTです。

ORA-24194

ERROR_TYPE_MISMATCH

取出しメソッドのJavaタイプとペイロードのフィールドのJavaタイプ間のタイプ変換が無効です。

ORA-24195

ERROR_MAP_TOO_LARGE

マップのサイズがaq$_jms_namearray ADTの容量を超えています。現行の上限サイズは1024バイトです。get_namesファンクションをoffsetおよびlengthパラメータとともに使用すると、複数の小さなチャンクに分散している名前配列を取り出せます。

ORA-24196

ERROR_WRONG_MODE

メッセージ・ペイロードへのアクセス・モードが不適切です。たとえば、書込み専用モードでメッセージ・ペイロードを読み取ろうとしているか、読取り専用モードでメッセージ・ペイロードに書き込もうとしています。

ORA-24197

ERROR_JAVA_EXCEPTION

他のエラー・カテゴリにあてはまらないJava例外があった場合に発生します。aq$_jms_map_messageaq$_jms_bytes_messageおよびaq$_jms_stream_messageget_exception静的プロシージャを使用すると、Javaストアド・プロシージャから最後にスローされた例外の情報を取り出せます。

取出し前に他の例外がスローされた場合は、単一の静的な変数を使用して最後の例外が格納され、上書きされます。PL/SQL側の例外情報を表示するために、新しいADT aq$_jms_exceptionが作成されています。

ORA-24198

ERROR_INVALID_ID

メッセージのアクセスに、無効な操作IDが使用されています。

ORA-24199

ERROR_STORE_OVERFLOW

操作しようとしている同じタイプのメッセージ数が、Javaストアド・プロシージャ側のメッセージ・ストアのサイズを超えています。現在のストアのサイズは20です。同時に20を超えるメッセージを操作する必要があることは、普通ではありません。1つのメッセージを使用した後、cleanプロシージャのコールを忘れることがよくあります。cleanプロシージャは、他のメッセージが使用するためにアクセスしようとするメッセージ・スロットを解放します。


Oracle JMSタイプの定数

この項では、メッセージ・タイプのファンクションを処理する場合に便利な定数について説明します。

DBMS_AQパッケージの定数

DBMS_AQパッケージの定数は、様々なタイプのJMSメッセージを指定します。これらは、独自のメッセージ・タイプを持つ一般的なメッセージのアップキャストおよびダウンキャスト、または構築時の一般的なメッセージの処理に便利です。

JMS_TEXT_MESSAGE   CONSTANT BINARY_INTEGER;
JMS_BYTES_MESSAGE  CONSTANT BINARY_INTEGER;
JMS_STREAM_MESSAGE CONSTANT BINARY_INTEGER;
JMS_MAP_MESSAGE    CONSTANT BINARY_INTEGER;
JMS_OBJECT_MESSAGE CONSTANT BINARY_INTEGER;

SYS.DBMS_JMS_PLSQLパッケージの定数

SYS.DBMS_JMS_PLSQLパッケージの定数は、Oracle Database 10g で新しく作成されました。

メッセージ・ペイロードのモードを指定します。get_modeファンクションから戻された、メッセージ・ペイロードのモードを解釈する場合に便利です。

MESSAGE_ACCESS_READONLY  CONSTANT PLS_INTEGER;
MESSAGE_ACCESS_WRITEONLY CONSTANT PLS_INTEGER;

これらの定数により、Oracle Databaseアドバンスト・キューイングのキューのADTタイプを指定します。これらは、JMSセレクタをOracle Databaseアドバンスト・キューイングのルールに変換する際に役立ちます。

DESTPLOAD_JMSTYPE CONSTANT PLS_INTEGER;
DESTPLOAD_USERADT CONSTANT PLS_INTEGER;
DESTPLOAD_ANYDATA CONSTANT PLS_INTEGER;

aq$_jms_valueタイプに格納できるデータ・タイプを指定します。AQ$_JMS_MAP_MESSAGEget_objectメソッド、またはAQ$_JMS_STREAM_MESSAGEread_objectメソッドから戻されたaq$_jms_valueを解釈する場合に便利です。

DATA_TYPE_BYTE           CONSTANT PLS_INTEGER;
DATA_TYPE_SHORT          CONSTANT PLS_INTEGER;
DATA_TYPE_INTEGER        CONSTANT PLS_INTEGER;
DATA_TYPE_LONG           CONSTANT PLS_INTEGER;
DATA_TYPE_FLOAT          CONSTANT PLS_INTEGER;
DATA_TYPE_DOUBLE         CONSTANT PLS_INTEGER;
DATA_TYPE_BOOLEAN        CONSTANT PLS_INTEGER;
DATA_TYPE_CHARACTER      CONSTANT PLS_INTEGER;
DATA_TYPE_STRING         CONSTANT PLS_INTEGER;
DATA_TYPE_BYTES          CONSTANT PLS_INTEGER;
DATA_TYPE_UNSIGNED_BYTE  CONSTANT PLS_INTEGER;
DATA_TYPE_UNSIGNED_SHORT CONSTANT PLS_INTEGER;

メッセージ・タイプADTのファンクションにより発生するORAエラーのエラー番号を指定します。エラーを処理する場合に便利です。

ERROR_DATA_OVERFLOW   CONSTANT PLS_INTEGER := -24190;
ERROR_PROP_NAME_EXIST CONSTANT PLS_INTEGER := -24191;
ERROR_PROP_NAME_NULL  CONSTANT PLS_INTEGER := -24192;
ERROR_EXCEED_RANGE    CONSTANT PLS_INTEGER := -24193;
ERROR_TYPE_MISMATCH   CONSTANT PLS_INTEGER := -24194;
ERROR_MAP_TOO_LARGE   CONSTANT PLS_INTEGER := -24195;
ERROR_WRONG_MODE      CONSTANT PLS_INTEGER := -24196;
ERROR_JAVA_EXCEPTION  CONSTANT PLS_INTEGER := -24197;
ERROR_INVALID_ID      CONSTANT PLS_INTEGER := -24198;
ERROR_STORE_OVERFLOW  CONSTANT PLS_INTEGER := -24199;

CONVERT_JMS_SELECTOR

Oracle Databaseには、JMSセレクタからOracle Databaseアドバンスト・キューイングのルールへの変換を支援するストアド・プロシージャが3つ用意されています。これらのルールは、ADD_SUBSCRIBER操作でサブスクライバ・ルールとして、またはDEQUEUE操作でデキュー条件として使用できます。これらのプロシージャは、SYS.dbms_jms_plsqlパッケージに含まれています。

最小限の仕様による変換

最初のプロシージャは、dbms_jms_plsql.DESTPLOAD_JMSTYPEを対応する定数に持つJMS ADTのいずれかが宛先のペイロード・タイプであり、またJ2EE準拠モードがTRUEであるとみなします。

構文

Function convert_jms_selector(selector IN VARCHAR2) RETURN VARCHAR2

戻り値

変換後のOracle Databaseアドバンスト・キューイングのルールが表示されます。変換エラーが生じた場合は、NULLが表示されます。

例外

実行中にJavaストアド・プロシージャが例外をスローした場合はORA-24197が発生します。

宛先のペイロード・タイプを指定した場合の変換

2番目のプロシージャは、1番目に加え、dest_pload_typeパラメータも使用します。このパラメータがSYS.dbms_jms_plsql.DESTPLOAD_JMSTYPEまたはSYS.dbms_jms_plsql.DESTPLOAD_ANYDATAである場合にのみ、JMSセレクタからOracle Databaseアドバンスト・キューイングのルールへの変換が行われます。dest_pload_typeパラメータがSYS.dbms_jms_plsql.DESTPLOAD_USERADTの場合は、セレクタのパラメータとまったく同じVARCHAR2値が戻されます。dest_pload_typeパラメータがこれらの3つの定数に該当しない場合は、NULLが戻されます。

このファンクションは、J2EE準拠モードがTRUEであると前提しています。

構文

Function convert_jms_selector(
   selector IN VARCHAR2, 
   dest_pload_type IN PLS_INTEGER)
RETURN VARCHAR2

戻り値

変換後のOracle Databaseアドバンスト・キューイングのルールが表示されます。変換エラーが生じた場合は、NULLが表示されます。

例外

実行中にJavaストアド・プロシージャが例外をスローした場合はORA-24197が発生します。

宛先のペイロード・タイプおよび準拠モードを指定した場合の変換

3番目のプロシージャは、dest_pload_typeパラメータおよびcompliantパラメータを利用します。dest_pload_typeパラメータがSYS.dbms_jms_plsql.DESTPLOAD_JMSTYPEまたはSYS.dbms_jms_plsql.DESTPLOAD_ANYDATAである場合にのみ、JMSセレクタからOracle Databaseアドバンスト・キューイングのルールへの変換が行われます。dest_pload_typeパラメータがSYS.dbms_jms_plsql.DESTPLOAD_USERADTの場合は、セレクタのパラメータとまったく同じVARCHAR2値が戻されます。dest_pload_typeパラメータがこれらの3つの定数に該当しない場合は、NULLが戻されます。

変換がJ2EE準拠モードかどうかは、compliantパラメータが制御します。JMSセレクタの非準拠変換は下位互換用にサポートされています。

構文

Function convert_jms_selector(
   selector         IN  VARCHAR2,
   dest_pload_type  IN  PLS_INTEGER,
   compliant        IN  BOOLEAN )

戻り値

変換後のOracle Databaseアドバンスト・キューイングのルールが表示されます。変換エラーが生じた場合は、NULLが表示されます。

例外

実行中にJavaストアド・プロシージャが例外をスローした場合はORA-24197が発生します。

JMSタイプの要約

SYS.AQ$_JMS_MESSAGEタイプ

このADTタイプは、テキスト・メッセージ、バイト・メッセージ、ストリーム・メッセージ、マップ・メッセージまたはオブジェクト・メッセージという5種類のJMSメッセージを表示できます。つまり、このADTを使用して作成されたキューには、5種類のJMSメッセージが格納されます。

この項では、次の項目について説明します。

構文

TYPE AQ$_JMS_MESSAGE AS OBJECT(
 header        aq$_jms_header, 
 senderid      varchar2(100), 
 message_type  INT, 
 text_len      INT, 
 bytes_len     INT, 
 text_vc       varchar2(4000), 
 bytes_raw     raw(2000), 
 text_lob      clob, 
 bytes_lob     blob, 
 STATIC FUNCTION  construct (mtype      IN  INT)
   RETURN aq$_jms_message, 
 STATIC FUNCTION  construct (text_msg   IN  aq$_jms_text_message)
   RETURN aq$_jms_message,
 STATIC FUNCTION  construct (bytes_msg  IN  aq$_jms_bytes_message)
   RETURN aq$_jms_message,
 STATIC FUNCTION  construct (stream_msg IN  aq$_jms_stream_message)
   RETURN aq$_jms_message,
 STATIC FUNCTION  construct (map_msg    IN  aq$_jms_map_message)
   RETURN aq$_jms_message,
 STATIC FUNCTION  construct (object_msg IN  aq$_jms_object_message)
   RETURN aq$_jms_message,
 MEMBER FUNCTION  cast_to_bytes_msg  RETURN aq$_jms_bytes_message,
 MEMBER FUNCTION  cast_to_map_msg    RETURN aq$_jms_map_message,
 MEMBER FUNCTION  cast_to_object_msg RETURN aq$_jms_object_message,
 MEMBER FUNCTION  cast_to_stream_msg RETURN aq$_jms_stream_message,
 MEMBER FUNCTION  cast_to_text_msg   RETURN aq$_jms_text_message,
 MEMBER PROCEDURE set_replyto  (replyto IN sys.aq$_agent),
 MEMBER PROCEDURE set_type     (type     IN  VARCHAR),
 MEMBER PROCEDURE set_userid   (userid   IN  VARCHAR),
 MEMBER PROCEDURE set_appid    (appid    IN  VARCHAR),
 MEMBER PROCEDURE set_groupid  (groupid  IN  VARCHAR),
 MEMBER PROCEDURE set_groupseq (groupseq IN  INT),
 MEMBER FUNCTION  get_replyto  RETURN sys.aq$_agent,
 MEMBER FUNCTION  get_type     RETURN VARCHAR,
 MEMBER FUNCTION  get_userid   RETURN VARCHAR,
 MEMBER FUNCTION  get_appid    RETURN VARCHAR,
 MEMBER FUNCTION  get_groupid  RETURN VARCHAR,
 MEMBER FUNCTION  get_groupseq RETURN INT,
 MEMBER PROCEDURE clear_properties,
 MEMBER PROCEDURE set_boolean_property (property_name IN VARCHAR,
   property_value IN BOOLEAN),
 MEMBER PROCEDURE set_byte_property    (property_name IN VARCHAR,
   property_value IN INT), 
 MEMBER PROCEDURE set_double_property  (property_name IN VARCHAR, 
   property_value IN DOUBLE PRECISION),
 MEMBER PROCEDURE set_float_property   (property_name IN VARCHAR, 
   property_value IN FLOAT), 
 MEMBER PROCEDURE set_int_property     (property_name IN VARCHAR, 
   property_value IN INT),
 MEMBER PROCEDURE set_long_property    (property_name IN VARCHAR, 
   property_value IN NUMBER), 
 MEMBER PROCEDURE set_short_property   (property_name IN VARCHAR, 
   property_value IN INT), 
 MEMBER PROCEDURE set_string_property  (property_name IN VARCHAR, 
   property_value IN VARCHAR), 
 MEMBER FUNCTION get_boolean_property (property_name IN VARCHAR) RETURN BOOLEAN,
 MEMBER FUNCTION get_byte_property    (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_double_property  (property_name IN VARCHAR) 
   RETURN DOUBLE PRECISION, 
 MEMBER FUNCTION get_float_property   (property_name IN VARCHAR) RETURN FLOAT, 
 MEMBER FUNCTION get_int_property     (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_long_property    (property_name IN VARCHAR) RETURN NUMBER,
 MEMBER FUNCTION get_short_property   (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_string_property  (property_name IN VARCHAR) RETURN VARCHAR,
 MEMBER PROCEDURE set_text     (payload  IN  VARCHAR2),
 MEMBER PROCEDURE set_text     (payload  IN  CLOB), 
 MEMBER PROCEDURE set_bytes    (payload  IN  RAW), 
 MEMBER PROCEDURE set_bytes    (payload  IN  BLOB), 
 MEMBER PROCEDURE get_text     (payload  OUT VARCHAR2), 
 MEMBER PROCEDURE get_text     (payload  OUT CLOB), 
 MEMBER PROCEDURE get_bytes    (payload  OUT RAW), 
 MEMBER PROCEDURE get_bytes    (payload  OUT BLOB)); 

CONSTRUCT静的ファンクション

このタイプには、6種類のCONSTRUCT静的ファンクションがあります。

STATIC FUNCTION construct (mtype IN INT) RETURN aq$_jms_message

aq$_jms_messageのインスタンスを作成します。このインスタンスは、固有タイプのJMSメッセージ(TextMessage、BytesMessage、MapMessage、StreamMessageまたはObjectMessage)を保持できます。作成されたaq$_jms_messageインスタンスのメッセージ・タイプは、構成メソッドに渡されるmtypeパラメータによって異なります。構成後のメッセージは、保持用に構成されたJMSメッセージ・タイプの格納に使用できます。

mtypeパラメータは、「Oracle JMSタイプの定数」に示されている定数のいずれかである必要があります。

DBMS_AQ.JMS_TEXT_MESSAGE 
DBMS_AQ.JMS_BYTES_MESSAGE 
DBMS_AQ.JMS_STREAM_MESSAGE 
DBMS_AQ.JMS_MAP_MESSAGE 
DBMS_AQ.JMS_OBJECT_MESSAGE 
STATIC FUNCTION construct (text_msg IN aq$_jms_text_message) RETURN aq$_jms_message

aq$_jms_text_messageからaq$_jms_messageを作成します。

STATIC FUNCTION construct (bytes_msg IN aq$_jms_bytes_message) RETURN aq$_jms_message;

aq$_jms_bytes_messageからaq$_jms_messageを作成します。

STATIC FUNCTION construct (stream_msg IN aq$_jms_stream_message) RETURN aq$_jms_message;

aq$_jms_stream_messageからaq$_jms_messageを作成します。

STATIC FUNCTION construct (map_msg IN aq$_jms_map_message) RETURN aq$_jms_message;

aq$_jms_map_messageからaq$_jms_messageを作成します。

STATIC FUNCTION construct (object_msg IN aq$_jms_object_message) RETURN aq$_jms_message;

aq$_jms_object_messageからaq$_jms_messageを作成します。

変換メソッド

cast_to_bytes_msg RETURN aq$_jms_bytes_message

aq$_jms_messageからaq$_jms_bytes_messageに変換します。aq$_jms_bytes_messageを戻します。また、aq$_jms_messagemessage_type属性がDBMS_AQ.JMS_BYTES_MESSAGEでない場合は、NULLを戻します。aq$_jms_messagemessage_typeフィールドがDBMS_AQJMS.JMS_BYTES_MESSAGEでない場合は、ORA-24198が発生します。

cast_to_map_msg RETURN aq$_jms_map_message

aq$_jms_messageからaq$_jms_map_messageに変換します。aq$_jms_map_messageを戻します。また、aq$_jms_messagemessage_type属性がDBMS_AQ.JMS_MAP_MESSAGEでない場合は、NULLを戻します。aq$_jms_messagemessage_typeフィールドがDBMS_AQJMS.JMS_MAP_MESSAGEでない場合は、ORA-24198が発生します。

cast_to_object_msg RETURN aq$_jms_object_message

aq$_jms_messageからaq$_jms_object_messageに変換します。aq$_jms_object_messageを戻します。また、aq$_jms_messagemessage_type属性がDBMS_AQ.JMS_OBJECT_MESSAGEでない場合は、NULLを戻します。aq$_jms_messagemessage_typeフィールドがDBMS_AQJMS.JMS_OBJECT_MESSAGEでない場合は、ORA-24198が発生します。

cast_to_stream_msg RETURN aq$_jms_stream_message

aq$_jms_messageからaq$_jms_stream_messageに変換します。aq$_jms_stream_messageを戻します。また、aq$_jms_messagemessage_type属性がDBMS_AQ.JMS_STREAM_MESSAGEでない場合は、NULLを戻します。aq$_jms_messagemessage_typeフィールドがDBMS_AQJMS.JMS_STREAM_MESSAGEでない場合は、ORA-24198が発生します。

cast_to_text_msg RETURN aq$_jms_text_message

aq$_jms_messageからaq$_jms_text_messageに変換します。aq$_jms_text_messageを戻します。また、aq$_jms_messagemessage_type属性がDBMS_AQ.JMS_TEXT_MESSAGEでない場合は、NULLを戻します。aq$_jms_messagemessage_typeフィールドがDBMS_AQJMS.JMS_TEXT_MESSAGEでない場合は、ORA-24198が発生します。

JMSヘッダー・メソッド

set_replyto (replyto IN sys.aq$_agent)

JMSReplyToに対応するreplytoパラメータを設定します。

get_replyto RETURN sys.aq$_agent

JMSReplyToに対応するreplytoを戻します。

set_type (type IN VARCHAR)

JMSTypeに対応するJMSタイプを設定します(任意のテキストを設定できます)。

get_type RETURN VARCHAR

JMSTypeに対応するtypeを戻します。

システム・プロパティ・メソッド

set_userid (userid IN VARCHAR)

JMSXUserIDに対応するuseridを設定します。

set_appid (appid IN VARCHAR)

JMSXAppIDに対応するappidを設定します。

set_groupid (groupid IN VARCHAR)

JMSXGroupIDに対応するgroupidを設定します。

set_groupseq (groupseq IN INT)

JMSXGroupSeqに対応するgroupseqを設定します。

get_userid RETURN VARCHAR

JMSXUserIDに対応するuseridを戻します。

get_appid RETURN VARCHAR

JMSXAppIDに対応するappidを戻します。

get_groupid RETURN VARCHAR

JMSXGroupIDに対応するgroupidを戻します。

get_groupseq RETURN VARCHAR

JMSXGroupSeqに対応するgroupseqを戻します。

ユーザー・プロパティ・メソッド

clear_properties

すべてのユーザー・プロパティをクリアします。このプロシージャは、システムのプロパティに影響を与えません。

set_boolean_property (property_name IN VARCHAR, property_value IN BOOLEAN)

property_nameがNULLか存在するかをチェックします。NULLでない場合は、property_valueを内部表記(NUMBERタイプ)に格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_byte_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。NULLでない場合は、property_valueが-128から127(8ビット)の範囲内であるかどうかをチェックします。PL/SQLまたはRDBMSではBYTEデータ・タイプが定義されないため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_double_property (property_name IN VARCHAR, property_value IN DOUBLE PRECISION)

property_nameがNULLか存在するかをチェックします。NULLでない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_float_property (property_name IN VARCHAR, property_value IN FLOAT)

property_nameがNULLか存在するかをチェックします。NULLでない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_int_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。NULLでない場合は、property_valueが-2147483648から2147483647(32ビット)の範囲内であるかどうかをチェックします。PL/SQLおよびOracle DatabaseでのINTデータ・タイプは38ビットであるため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_long_property (property_name IN VARCHAR, property_value IN NUMBER)

property_nameがNULLか存在するかをチェックします。NULLでない場合は、property_valueを格納します。PL/SQLおよびOracle DatabaseでのNUMBERデータ・タイプは38ビットです。JavaでのLONGデータ・タイプは64ビットです。したがって、値の範囲チェックは必要ありません。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_short_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。NULLでない場合は、property_valueが-32768から32767(16ビット)の範囲内であるかどうかをチェックします。PL/SQLまたはRDBMSではSHORTデータ・タイプが定義されないため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_string_property (property_name IN VARCHAR, property_value IN VARCHAR)

property_nameがNULLか存在するかをチェックします。NULLでない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

get_boolean_property (property_name IN VARCHAR) RETURN BOOLEAN

対応するプロパティ名が存在し、かつ、そのプロパティがBOOLEANプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_byte_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがBYTEプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_double_property (property_name IN VARCHAR) RETURN DOUBLE PRECISION

対応するプロパティ名が存在し、かつ、そのプロパティがDOUBLEプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_float_property (property_name IN VARCHAR) RETURN FLOAT

対応するプロパティ名が存在し、かつ、そのプロパティがFLOATプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_int_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがINTEGERプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_long_property (property_name IN VARCHAR) RETURN NUMBER

対応するプロパティ名が存在し、かつ、そのプロパティがLONGプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_short_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがSHORTプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_string_property (property_name IN VARCHAR) RETURN VARCHAR

対応するプロパティ名が存在し、かつ、そのプロパティがSTRINGプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

ペイロード・メソッド

set_text (payload IN VARCHAR2)

ペイロード(VARCHAR2の値)を内部表記に設定します。

set_text (payload IN CLOB),

ペイロード(CLOBの値)を内部表記に設定します。

set_bytes (payload IN RAW)

ペイロード(RAWの値)を内部表記に設定します。

set_bytes (payload IN BLOB)

ペイロード(BLOBの値)を内部表記に設定します。

get_text (payload OUT VARCHAR2)

ペイロードの内部表記をVARCHAR2変数のペイロードに設定します。

get_text (payload OUT CLOB)

ペイロードの内部表記をCLOB変数のペイロードに設定します。

get_bytes (payload OUT RAW)

ペイロードの内部表記をRAW変数のペイロードに設定します。

get_bytes (payload OUT BLOB)

ペイロードの内部表記をBLOB変数のペイロードに設定します。

SYS.AQ$_JMS_TEXT_MESSAGEタイプ

このタイプは、TextMessageをOracle Databaseアドバンスト・キューイングのキューに格納するためのADTです。

この項では、次の項目について説明します。

構文

TYPE AQ$_JMS_TEXT_MESSAGE AS OBJECT(
 header    aq$_jms_header,
 text_len  INT,
 text_vc   varchar2(4000),
 text_lob  clob,
 STATIC FUNCTION construct    RETURN aq$_jms_text_message,
 MEMBER PROCEDURE set_replyto  (replyto  IN  sys.aq$_agent),
 MEMBER PROCEDURE set_type     (type     IN  VARCHAR),
 MEMBER FUNCTION  get_replyto RETURN sys.aq$_agent,
 MEMBER FUNCTION  get_type    RETURN VARCHAR,
 MEMBER PROCEDURE set_userid   (userid   IN  VARCHAR),
 MEMBER PROCEDURE set_appid    (appid    IN  VARCHAR),
 MEMBER PROCEDURE set_groupid  (groupid  IN  VARCHAR),
 MEMBER PROCEDURE set_groupseq (groupseq IN  INT),
 MEMBER FUNCTION get_userid   RETURN VARCHAR,
 MEMBER FUNCTION get_appid    RETURN VARCHAR,
 MEMBER FUNCTION get_groupid  RETURN VARCHAR,
 MEMBER FUNCTION get_groupseq RETURN INT,
 MEMBER PROCEDURE clear_properties,
 MEMBER PROCEDURE set_boolean_property(property_name IN VARCHAR,
   property_value IN BOOLEAN),
 MEMBER PROCEDURE set_byte_property   (property_name IN VARCHAR,
   property_value IN INT),
 MEMBER PROCEDURE set_double_property (property_name IN VARCHAR,
   property_value IN DOUBLE PRECISION),
 MEMBER PROCEDURE set_float_property  (property_name IN VARCHAR,
   property_value IN FLOAT),
 MEMBER PROCEDURE set_int_property    (property_name IN VARCHAR,
   property_value IN INT),
 MEMBER PROCEDURE set_long_property   (property_name IN VARCHAR,
   property_value IN NUMBER),
 MEMBER PROCEDURE set_short_property  (property_name IN VARCHAR,
   property_value IN INT),
 MEMBER PROCEDURE set_string_property (property_name IN VARCHAR,
   property_value IN VARCHAR),
 MEMBER FUNCTION get_boolean_property (property_name IN VARCHAR) 
   RETURN BOOLEAN,
 MEMBER FUNCTION get_byte_property    (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_double_property  (property_name IN VARCHAR)
   RETURN DOUBLE PRECISION,
 MEMBER FUNCTION get_float_property   (property_name IN VARCHAR) RETURN FLOAT,
 MEMBER FUNCTION get_int_property     (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_long_property    (property_name IN VARCHAR) RETURN NUMBER,
 MEMBER FUNCTION get_short_property   (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_string_property  (property_name IN VARCHAR) 
   RETURN VARCHAR,
 MEMBER PROCEDURE set_text            (payload  IN  VARCHAR2),
 MEMBER PROCEDURE set_text            (payload  IN  CLOB),
 MEMBER PROCEDURE get_text            (payload  OUT VARCHAR2),
 MEMBER PROCEDURE get_text            (payload  OUT CLOB));

CONSTRUCTファンクション

STATIC FUNCTION construct RETURN aq$_jms_text_message

空のaq$_jms_text_messageを作成します。

JMSヘッダー・メソッド

set_replyto (replyto IN sys.aq$_agent)

JMSのJMSReplyToに対応するreplytoパラメータを設定します。

set_type (type IN VARCHAR)

JMSのJMSTypeに対応するJMSタイプを設定します(任意のテキストを設定できます)。

get_replyto RETURN sys.aq$_agent

JMSReplyToに対応するreplytoを戻します。

get_type RETURN VARCHAR

JMSTypeに対応するtypeを戻します。

システム・プロパティ・メソッド

set_userid (userid IN VARCHAR)

JMSのJMSXUserIDに対応するuseridを設定します。

set_appid (appid IN VARCHAR)

JMSのJMSXAppIDに対応するappidを設定します。

set_groupid (groupid IN VARCHAR)

JMSのJMSXGroupIDに対応するgroupidを設定します。

set_groupseq (groupseq IN INT)

JMSのJMSXGroupSeqに対応するgroupseqを設定します。

get_userid RETURN VARCHAR

JMSXUserIDに対応するuseridを戻します。

get_appid RETURN VARCHAR

JMSXAppIDに対応するappidを戻します。

get_groupid RETURN VARCHAR

JMSXGroupIDに対応するgroupidを戻します。

get_groupseq RETURN INT

JMSXGroupSeqに対応するgroupseqを戻します。

ユーザー・プロパティ・メソッド

clear_properties

すべてのユーザー・プロパティをクリアします。このプロシージャは、システムのプロパティに影響を与えません。

set_boolean_property (property_name IN VARCHAR, property_value IN BOOLEAN)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを内部表記に格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_byte_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-128から127(8ビット)の範囲内であるかどうかをチェックします。PL/SQLまたはRDBMSではBYTEデータ・タイプが定義されないため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_double_property (property_name IN VARCHAR, property_value IN DOUBLE PRECISION)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_float_property (property_name IN VARCHAR, property_value IN FLOAT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_int_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-2147483648から2147483647(32ビット)の範囲内であるかどうかをチェックします。PL/SQLおよびOracle DatabaseでのINTデータ・タイプは38ビットであるため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_long_property (property_name IN VARCHAR, property_value IN NUMBER)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。PL/SQLおよびOracle DatabaseでのNUMBERデータ・タイプは38ビットです。JavaでのLONGデータ・タイプは64ビットです。したがって、値の範囲チェックは必要ありません。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が発生します。

set_short_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-32768から32767(16ビット)の範囲内であるかどうかをチェックします。PL/SQLまたはRDBMSではSHORTデータ・タイプが定義されないため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_string_property (property_name IN VARCHAR, property_value IN VARCHAR)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

get_boolean_property (property_name IN VARCHAR) RETURN BOOLEAN

対応するプロパティ名が存在し、かつ、そのプロパティがBOOLEANプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_byte_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがBYTEプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_double_property (property_name IN VARCHAR) RETURN DOUBLE PRECISION

対応するプロパティ名が存在し、かつ、そのプロパティがDOUBLEプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_float_property (property_name IN VARCHAR) RETURN FLOAT

対応するプロパティ名が存在し、かつ、そのプロパティがFLOATプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_int_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがINTEGERプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_long_property (property_name IN VARCHAR) RETURN NUMBER

対応するプロパティ名が存在し、かつ、そのプロパティがLONGプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_short_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがSHORTプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_string_property (property_name IN VARCHAR) RETURN VARCHAR

対応するプロパティ名が存在し、かつ、そのプロパティがSTRINGプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

ペイロード・メソッド

set_text (payload IN VARCHAR2)

ペイロード(VARCHAR2の値)を内部表記に設定します。

set_text (payload IN CLOB)

ペイロード(CLOBの値)を内部表記に設定します。

get_text (payload OUT VARCHAR2)

ペイロードの内部表記をVARCHAR2変数のペイロードに設定します。

get_text (payload OUT CLOB)

ペイロードの内部表記をCLOB変数のペイロードに設定します。

SYS.AQ$_JMS_BYTES_MESSAGEタイプ

このタイプは、BytesMessageをOracle Databaseアドバンスト・キューイングのキューに格納するためのADTです。

この項では、次の項目について説明します。

構文

TYPE AQ$_JMS_BYTES_MESSAGE AS OBJECT(
 header     aq$_jms_header,
 bytes_len  INT,
 bytes_raw  raw(2000),
 bytes_lob  blob,
 STATIC FUNCTION construct RETURN aq$_jms_bytes_message,
 MEMBER PROCEDURE set_replyto  (replyto IN sys.aq$_agent),
 MEMBER PROCEDURE set_type     (type    IN VARCHAR),
 MEMBER FUNCTION get_replyto RETURN sys.aq$_agent,
 MEMBER FUNCTION get_type    RETURN VARCHAR,
 MEMBER PROCEDURE set_userid   (userid   IN VARCHAR),
 MEMBER PROCEDURE set_appid    (appid    IN VARCHAR),
 MEMBER PROCEDURE set_groupid  (groupid  IN VARCHAR),
 MEMBER PROCEDURE set_groupseq (groupseq IN INT),
 MEMBER FUNCTION get_userid   RETURN VARCHAR,
 MEMBER FUNCTION get_appid    RETURN VARCHAR,
 MEMBER FUNCTION get_groupid  RETURN VARCHAR,
 MEMBER FUNCTION get_groupseq RETURN INT,
 MEMBER PROCEDURE clear_properties,
 MEMBER PROCEDURE set_boolean_property(property_name IN VARCHAR,
   property_value IN BOOLEAN),
 MEMBER PROCEDURE set_byte_property   (property_name IN VARCHAR,
   property_value IN INT),
 MEMBER PROCEDURE set_double_property (property_name IN VARCHAR,
   property_value IN DOUBLE PRECISION),
 MEMBER PROCEDURE set_float_property  (property_name IN VARCHAR,
   property_value IN FLOAT),
 MEMBER PROCEDURE set_int_property    (property_name IN VARCHAR,
   property_value IN INT),
 MEMBER PROCEDURE set_long_property   (property_name IN VARCHAR,
   property_value IN NUMBER),
 MEMBER PROCEDURE set_short_property  (property_name IN VARCHAR,
   property_valuE IN INT),
 MEMBER PROCEDURE set_string_property (property_name IN VARCHAR,
   property_value IN VARCHAR),
 MEMBER FUNCTION get_boolean_property (property_name IN VARCHAR) RETURN BOOLEAN,
 MEMBER FUNCTION get_byte_property    (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_double_property  (property_name IN VARCHAR) 
   RETURN DOUBLE PRECISION,
 MEMBER FUNCTION get_float_property   (property_name IN VARCHAR) RETURN FLOAT,
 MEMBER FUNCTION get_int_property     (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_long_property    (property_name IN VARCHAR) RETURN NUMBER,
 MEMBER FUNCTION get_short_property   (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_string_property  (property_name IN VARCHAR) RETURN VARCHAR,
 MEMBER PROCEDURE set_bytes           (payload  IN RAW),
 MEMBER PROCEDURE set_bytes           (payload  IN BLOB),
 MEMBER PROCEDURE get_bytes           (payload  OUT RAW),
 MEMBER PROCEDURE get_bytes           (payload  OUT BLOB),
 MEMBER FUNCTION  prepare             (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER PROCEDURE reset               (id IN PLS_INTEGER),
 MEMBER PROCEDURE flush               (id IN PLS_INTEGER),
 MEMBER PROCEDURE clear_body          (id IN PLS_INTEGER),
 MEMBER PROCEDURE clean               (id IN PLS_INTEGER),
 STATIC PROCEDURE clean_all,
 MEMBER FUNCTION get_mode           (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER FUNCTION read_boolean       (id IN PLS_INTEGER) RETURN BOOLEAN,
 MEMBER FUNCTION read_byte          (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER FUNCTION read_bytes         (id IN PLS_INTEGER, 
   value OUT NOCOPY BLOB, length IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER FUNCTION read_char          (id IN PLS_INTEGER) RETURN CHAR,
 MEMBER FUNCTION read_double        (id IN PLS_INTEGER) RETURN DOUBLE PRECISION,
 MEMBER FUNCTION read_float         (id IN PLS_INTEGER) RETURN FLOAT,
 MEMBER FUNCTION read_int           (id IN PLS_INTEGER) RETURN INT,
 MEMBER FUNCTION read_long          (id IN PLS_INTEGER) RETURN NUMBER,
 MEMBER FUNCTION read_short         (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER FUNCTION read_unsigned_byte  (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER FUNCTION read_unsigned_short (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER PROCEDURE read_utf          (id IN PLS_INTEGER, value OUT NOCOPY CLOB),
 MEMBER PROCEDURE write_boolean     (id IN PLS_INTEGER, value IN BOOLEAN),
 MEMBER PROCEDURE write_byte        (id IN PLS_INTEGER, value IN PLS_INTEGER),
 MEMBER PROCEDURE write_bytes       (id IN PLS_INTEGER, value IN RAW),
 MEMBER PROCEDURE write_bytes       (id IN PLS_INTEGER, value IN BLOB),
 MEMBER PROCEDURE write_bytes       (id IN PLS_INTEGER, value IN RAW,
   offset IN PLS_INTEGER, length IN PLS_INTEGER),
 MEMBER PROCEDURE write_bytes       (id IN PLS_INTEGER, value IN BLOB,
   offset IN INT, length IN INT), 
 MEMBER PROCEDURE write_char        (id IN PLS_INTEGER, value IN CHAR),
 MEMBER PROCEDURE write_double      (id IN PLS_INTEGER, 
   value IN DOUBLE PRECISION),
 MEMBER PROCEDURE write_float       (id IN PLS_INTEGER, value IN FLOAT),
 MEMBER PROCEDURE write_int         (id IN PLS_INTEGER, value IN PLS_INTEGER),
 MEMBER PROCEDURE write_long        (id IN PLS_INTEGER, value IN NUMBER),
 MEMBER PROCEDURE write_short       (id IN PLS_INTEGER, value IN PLS_INTEGER),
 MEMBER PROCEDURE write_utf         (id IN PLS_INTEGER, value IN VARCHAR2),
 MEMBER PROCEDURE write_utf         (id IN PLS_INTEGER, value IN CLOB));

CONSTRUCTファンクション

STATIC FUNCTION construct RETURN aq$_jms_bytes_message

空のaq$_jms_bytes_messageを作成します。

JMSヘッダー・メソッド

set_replyto (replyto IN sys.aq$_agent)

JMSのJMSReplyToに対応するreplytoパラメータを設定します。

set_type (type IN VARCHAR)

JMSのJMSTypeに対応するJMSタイプを設定します(任意のテキストを設定できます)。

get_replyto RETURN sys.aq$_agent

JMSReplyToに対応するreplytoを戻します。

get_type RETURN VARCHAR

JMSTypeに対応するtypeを戻します。

システム・プロパティ・メソッド

set_userid (userid IN VARCHAR)

JMSのJMSXUserIDに対応するuseridを設定します。

set_appid (appid IN VARCHAR)

JMSのJMSXAppIDに対応するappidを設定します。

set_groupid (groupid IN VARCHAR)

JMSのJMSXGroupIDに対応するgroupidを設定します。

set_groupseq (groupseq IN INT)

JMSのJMSXGroupSeqに対応するgroupseqを設定します。

get_userid RETURN VARCHAR

JMSXUserIDに対応するuseridを戻します。

get_appid RETURN VARCHAR

JMSXAppIDに対応するappidを戻します。

get_groupid RETURN VARCHAR

JMSXGroupIDに対応するgroupidを戻します。

get_groupseq RETURN NUMBER

JMSXGroupSeqに対応するgroupseqを戻します。

ユーザー・プロパティ・メソッド

clear_properties

すべてのユーザー・プロパティをクリアします。このプロシージャは、システムのプロパティに影響を与えません。

set_boolean_property (property_name IN VARCHAR, property_value IN BOOLEAN)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを内部表記に格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_byte_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-128から127(8ビット)の範囲内であるかどうかをチェックします。PL/SQLまたはRDBMSではBYTEデータ・タイプが定義されないため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_double_property (property_name IN VARCHAR, property_value IN DOUBLE PRECISION)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_float_property (property_name IN VARCHAR, property_value IN FLOAT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_int_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-2147483648から2147483647(32ビット)の範囲内であるかどうかをチェックします。PL/SQLおよびOracle DatabaseでのINTデータ・タイプは38ビットであるため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_long_property (property_name IN VARCHAR, property_value IN NUMBER)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。PL/SQLおよびOracle DatabaseでのNUMBERデータ・タイプは38ビットです。JavaでのLONGデータ・タイプは64ビットです。したがって、値の範囲チェックは必要ありません。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が発生します。

set_short_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-32768から32767(16ビット)の範囲内であるかどうかをチェックします。PL/SQLまたはRDBMSではSHORTデータ・タイプが定義されないため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_string_property (property_name IN VARCHAR, property_value IN VARCHAR)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

get_boolean_property (property_name IN VARCHAR) RETURN BOOLEAN

対応するプロパティ名が存在し、かつ、そのプロパティがBOOLEANプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_byte_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがBYTEプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_double_property (property_name IN VARCHAR) RETURN DOUBLE PRECISION

対応するプロパティ名が存在し、かつ、そのプロパティがDOUBLEプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_float_property (property_name IN VARCHAR) RETURN FLOAT

対応するプロパティ名が存在し、かつ、そのプロパティがFLOATプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_int_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがINTEGERプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_long_property (property_name IN VARCHAR) RETURN NUMBER

対応するプロパティ名が存在し、かつ、そのプロパティがLONGプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_short_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがSHORTプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_string_property (property_name IN VARCHAR) RETURN VARCHAR

対応するプロパティ名が存在し、かつ、そのプロパティがSTRINGプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

ペイロード・メソッド

set_bytes (payload in RAW)

ペイロード(RAWの値)を内部表記に設定します。

set_bytes (payload in BLOB)

ペイロード(BLOBの値)を内部表記に設定します。

get_bytes (payload out RAW)

ペイロードの内部表記をRAW変数のペイロードに設定します。ペイロードの長さが32767(PL/SQLでのRAWの最大長)を超える場合は、ORA-24190が発生します。

get_bytes (payload out BLOB)

ペイロードの内部表記をBLOB変数のペイロードに設定します。

prepare (id IN PLS_INTEGER) RETURN PLS_INTEGER

aq$_jms_bytes_messageに格納されたバイト配列を、JavaオブジェクトとしてJavaストアド・プロシージャにデコードします。デコード結果は、Jservセッション・メモリーに静的な変数として格納されます。パラメータidは、Javaオブジェクトが格納されているOracle Database JVMセッション・メモリー内の場所を特定するために使用されます。idがNULLの場合は、PL/SQLオブジェクトに対して新しいスロットが作成されます。ペイロードにおけるこれ以降のJMS操作では、この操作IDが必要となります。

また、このファンクションは、メッセージ・アクセス・モードをMESSAGE_ACCESS_READONLYに設定します。write_XXXプロシージャの後続のコールにより、ORA-24196エラーが発生します。clear_bodyプロシージャをコールすると、メッセージ・アクセス・モードをMESSAGE_ACCESS_READONLYに設定できます。

Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、操作IDが無効な場合はORA-24198が、またJavaストアド・プロシージャのメッセージ・ストアがオーバーフローするとORA-24199が発生します。

reset (id IN PLS_INTEGER)

最初にストリームの開始位置をリセットし、バイト・メッセージを読取り専用モードに設定します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

flush (id IN PLS_INTEGER)

Jservの静的な変数のコンテンツをaq$_jms_bytes_messageと同期化します。このプロシージャは、基盤のアクセス・モードには影響を与えません。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

clear_body (id IN PLS_INTEGER)

Javaストアド・プロシージャの静的な変数を空のペイロードに設定します。パラメータidは、Javaオブジェクトが格納されているOracle Database JVMセッション・メモリー内の場所を特定するために使用されます。idがNULLの場合は、PL/SQLオブジェクトに対して新しいスロットが作成されます。ペイロードにおけるこれ以降のJMS操作では、この操作IDが必要となります。

また、メッセージ・アクセス・モードをMESSAGE_ACCESS_WRITEONLYに設定します。read_XXXプロシージャの後続のコールにより、ORA-24196エラーが発生します。resetまたはprepareプロシージャをコールすると、メッセージ・アクセス・モードをMESSAGE_ACCESS_READONLYに設定できます。書込み専用および読取り専用モードは、AQ$_JMS_BYTES_MESSAGEのペイロード・ファンクションにのみ反映されます。ヘッダー・ファンクションには影響を与えません。

Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、操作IDが無効な場合はORA-24198が、またJavaストアド・プロシージャのメッセージ・ストアがオーバーフローするとORA-24199が発生します。

clean (id IN PLS_INTEGER)

Javaストアド・プロシージャ側で操作IDに対応するDataInputStreamまたはDataOutputStreamをクローズし、クリーンアップします。このプロシージャをコールすることは、メモリー・リークの防止に非常に重要です。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

clean_all

Javaストアド・プロシージャ側で、対応するタイプのメッセージ・ストアに含まれるすべてのメッセージをクローズし、クリーンアップします。このプロシージャでは、実行中にJavaストアド・プロシージャが例外をスローした場合、ORA-24197が発生します。

get_mode (id IN PLS_INTEGER) RETURN PLS_INTEGER

このメッセージの現行モードを戻します。戻り値は、SYS.dbms_jms.plsql.MESSAGE_ACCESS_READONLYまたはSYS.dbms_jms.plsql.MESSAGE_ACCESS_WRITEONLYのどちらかです。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_boolean (id IN PLS_INTEGER) RETURN BOOLEAN

バイト・メッセージのブール値を読み取り、そのブール値を戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。パラメータidは操作IDです。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_byte (id IN PLS_INTEGER) RETURN PLS_INTEGER

バイト・メッセージのBYTE値を読み取り、そのBYTE値を戻します。ストリームの末尾に到達すると、NULLが戻されます。PL/SQLにはBYTEタイプが存在しないため、Oracle DatabaseはPLS_INTEGERを使用してBYTEを表示します。PL/SQLユーザーがPLS_INTEGERを取得しても、その値はJava BYTE値の範囲内です。この値がwrite_byteファンクションにより発行されている場合、範囲外エラーにはなりません。パラメータidは操作IDです。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_bytes (id IN PLS_INTEGER, value OUT NO COPY BLOB, length IN PLS_INTEGER) RETURN PLS_INTEGER

バイト・メッセージ・ストリームのバイト長の値を読み取り、その総バイト数を戻します。ストリームの末尾に到達し、読み取るデータがなくなった場合は、-1が戻されます。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_char (id IN PLS_INTEGER) RETURN CHAR

バイト・メッセージの文字値を読み取り、その文字値を戻します。ストリームの末尾に到達すると、NULLが戻されます。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_double (id IN PLS_INTEGER) RETURN DOUBLE PRECISION

バイト・メッセージのDOUBLE値を読み取り、その文字値を戻します。ストリームの末尾に到達すると、NULLが戻されます。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_float (id IN PLS_INTEGER) RETURN FLOAT

バイト・メッセージのFLOAT値を読み取り、そのFLOAT値を戻します。ストリームの末尾に到達すると、NULLが戻されます。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_int (id IN PLS_INTEGER) RETURN INT

バイト・メッセージのINT値を読み取り、そのINT値を戻します。ストリームの末尾に到達すると、NULLが戻されます。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_long (id IN PLS_INTEGER) RETURN NUMBER

バイト・メッセージのLONG値を読み取り、そのLONG値を戻します。ストリームの末尾に到達すると、NULLが戻されます。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_short (id IN PLS_INTEGER) RETURN PLS_INTEGER

バイト・メッセージのSHORT値を読み取り、そのSHORT値を戻します。ストリームの末尾に到達すると、NULLが戻されます。PL/SQLにはSHORTタイプが存在しないため、PLS_INTEGERを使用してSHORTを表示します。PL/SQLユーザーがPLS_INTEGERを取得しても、その値はJava SHORT値の範囲内です。この値がwrite_shortファンクションにより発行されている場合、範囲外エラーにはなりません。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_unsigned_byte (id IN PLS_INTEGER) RETURN PLS_INTEGER

バイト・メッセージ・ストリームから符号なしの8ビット数値を読み取り、バイト・メッセージ・ストリームの次のバイトを符号なしの8ビット数値に解釈して戻します。ストリームの末尾に到達すると、NULLが戻されます。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_unsigned_short (id IN PLS_INTEGER) RETURN PLS_INTEGER

バイト・メッセージ・ストリームから符号なしの16ビット数値を読み取り、バイト・メッセージ・ストリームの次の2バイトを符号なしの16ビット数値に解釈して戻します。ストリームの末尾に到達すると、NULLが戻されます。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_utf (id IN PLS_INTEGER, value OUT NOCOPY CLOB)

UTF-8フォーマットを使用してエンコードされた文字列をバイト・メッセージから読み取ります。ストリームの末尾に到達すると、NULLが戻されます。バイト・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_boolean (id IN PLS_INTEGER, value IN BOOLEAN)

BOOLEANを1バイトの値としてバイト・メッセージ・ストリームに書き込みます。値TRUEは値(バイト)1として書き込まれます。値FALSEは値(バイト)0として書き込まれます。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_byte (id IN PLS_INTEGER, value IN PLS_INTEGER)

バイトをバイト・メッセージに書き込みます。PL/SQLにはBYTEタイプが存在しないため、PLS_INTEGERを使用してBYTEを表示します。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_bytes (id IN PLS_INTEGER, value IN RAW)

バイトの配列をバイト・メッセージに書き込みます。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_bytes (id IN PLS_INTEGER, value IN BLOB)

バイトの配列をバイト・メッセージに書き込みます。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_bytes (id IN PLS_INTEGER, value IN RAW, offset IN PLS_INTEGER, length IN PLS_INTEGER)

バイト配列の一部をバイト・メッセージ・ストリームに書き込みます。パラメータoffsetは、バイト配列で最初のオフセットです。[offset, offset+length]がバイト配列値の範囲を超えた場合、Javaストアド・プロシージャでJava IndexOutOfBounds例外がスローされ、このプロシージャによりORA-24197エラーが発生します。索引は0から開始します。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_bytes (id IN PLS_INTEGER, value IN BLOB, offset IN INT, length IN INT)

バイト配列の一部をバイト・メッセージ・ストリームに書き込みます。パラメータoffsetは、バイト配列で最初のオフセットです。[offset, offset+length]がバイト配列値の範囲を超えた場合、Javaストアド・プロシージャでJava IndexOutOfBounds例外がスローされ、このプロシージャによりORA-24197エラーが発生します。索引は0から開始します。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_char (id IN PLS_INTEGER, value IN CHAR)

文字値をバイト・メッセージに書き込みます。値に複数の文字が設定されている場合は、最初の文字が書き込まれます。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_double (id IN PLS_INTEGER, value IN DOUBLE PRECISION)

DOUBLE値をバイト・メッセージに書き込みます。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_float (id IN PLS_INTEGER, value IN FLOAT)

FLOAT値をバイト・メッセージに書き込みます。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_int (id IN PLS_INTEGER, value IN PLS_INTEGER)

INT値をバイト・メッセージに書き込みます。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_long (id IN PLS_INTEGER, value IN NUMBER)

LONG値をバイト・メッセージに書き込みます。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_short (id IN PLS_INTEGER, value IN PLS_INTEGER)

SHORTを2バイトの値として、バイト数の大きな方から先に、バイト・メッセージに書き込みます。PL/SQLにはSHORTタイプが存在しないため、INTを使用してSHORTを表示します。パラメータ値が有効な範囲を超えた場合は例外ORA-24193が、バイト・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、または操作IDが無効な場合はORA-24198が発生します。

write_utf (id IN PLS_INTEGER, value IN VARCHAR2)

システムに依存したUTF-8エンコーディングを使用し、文字列をバイト・メッセージ・ストリームに書き込みます。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_utf (id IN PLS_INTEGER, value IN CLOB)

システムに依存したUTF-8エンコーディングを使用し、文字列をバイト・メッセージ・ストリームに書き込みます。バイト・メッセージが読取り専用モードの場合は例外ORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

SYS.AQ$_JMS_MAP_MESSAGEタイプ

このタイプは、MapMessageをOracle Databaseアドバンスト・キューイングのキューに格納するためのADTです。

この項では、次の項目について説明します。

構文

TYPE aq$_jms_map_message AS object(
 header     aq$_jms_header,
 bytes_len  int,
 bytes_raw  raw(2000),
 bytes_lob  blob,
 STATIC FUNCTION  construct   RETURN aq$_jms_map_message,
 MEMBER PROCEDURE set_replyto  (replyto IN sys.aq$_agent),
 MEMBER PROCEDURE set_type     (type    IN VARCHAR),
 MEMBER FUNCTION get_replyto  RETURN sys.aq$_agent,
 MEMBER FUNCTION get_type     RETURN VARCHAR,
 MEMBER PROCEDURE set_userid   (userid   IN VARCHAR),
 MEMBER PROCEDURE set_appid    (appid    IN VARCHAR),
 MEMBER PROCEDURE set_groupid  (groupid  IN VARCHAR),
 MEMBER PROCEDURE set_groupseq (groupseq IN INT),
 MEMBER FUNCTION get_userid   RETURN VARCHAR,
 MEMBER FUNCTION get_appid    RETURN VARCHAR,
 MEMBER FUNCTION get_groupid  RETURN VARCHAR,
 MEMBER FUNCTION get_groupseq RETURN INT,
 MEMBER PROCEDURE clear_properties,
 MEMBER PROCEDURE set_boolean_property(property_name IN VARCHAR,
   property_value IN BOOLEAN),
 MEMBER PROCEDURE set_byte_property   (property_name IN VARCHAR,
   property_value IN INT),
 MEMBER PROCEDURE set_double_property (property_name IN VARCHAR,
   property_value IN DOUBLE PRECISION),
 MEMBER PROCEDURE set_float_property  (property_name IN VARCHAR,
   property_value IN FLOAT),
 MEMBER PROCEDURE set_int_property    (property_name IN VARCHAR,
   property_value IN INT),
 MEMBER PROCEDURE set_long_property   (property_name IN VARCHAR,
   property_value IN NUMBER),
 MEMBER PROCEDURE set_short_property  (property_name IN VARCHAR,
   property_valuE IN INT),
 MEMBER PROCEDURE set_string_property (property_name IN VARCHAR,
   property_value IN VARCHAR),
 MEMBER FUNCTION get_boolean_property (property_name IN VARCHAR) RETURN BOOLEAN,
 MEMBER FUNCTION get_byte_property    (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_double_property  (property_name IN VARCHAR) 
   RETURN DOUBLE PRECISION,
 MEMBER FUNCTION get_float_property   (property_name IN VARCHAR) RETURN FLOAT,
 MEMBER FUNCTION get_int_property     (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_long_property    (property_name IN VARCHAR) RETURN NUMBER,
 MEMBER FUNCTION get_short_property   (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_string_property  (property_name IN VARCHAR) RETURN VARCHAR,
 MEMBER PROCEDURE set_bytes   (payload IN RAW),
 MEMBER PROCEDURE set_bytes   (payload IN BLOB),
 MEMBER PROCEDURE get_bytes   (payload OUT RAW),
 MEMBER PROCEDURE get_bytes   (payload OUT BLOB),
 MEMBER FUNCTION  prepare     (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER PROCEDURE flush       (id  IN  PLS_INTEGER),
 MEMBER PROCEDURE clear_body  (id IN PLS_INTEGER),
 MEMBER PROCEDURE clean       (id  IN  PLS_INTEGER),
 STATIC PROCEDURE clean_all,
 MEMBER PROCEDURE set_boolean (id IN PLS_INTEGER, name IN VARCHAR2,
   value IN BOOLEAN),
 MEMBER PROCEDURE set_byte    (id IN PLS_INTEGER, name IN VARCHAR2,
   value IN  PLS_INTEGER),
 MEMBER PROCEDURE set_bytes   (id IN PLS_INTEGER, name IN VARCHAR2, 
   value IN  RAW),
 MEMBER PROCEDURE set_bytes   (id IN PLS_INTEGER, name IN VARCHAR2, 
   value IN RAW, offset IN INT, length IN INT),
 MEMBER PROCEDURE set_bytes   (id IN PLS_INTEGER, name IN VARCHAR2, 
   value IN BLOB), 
 MEMBER PROCEDURE set_bytes   (id IN PLS_INTEGER, name IN VARCHAR2,
   value IN BLOB, offset IN INT, length IN INT),
 MEMBER PROCEDURE set_char    (id IN PLS_INTEGER, name IN VARCHAR2,
   value IN  CHAR),
 MEMBER PROCEDURE set_double  (id IN PLS_INTEGER, name IN VARCHAR2,
   value IN  DOUBLE PRECISION), 
 MEMBER PROCEDURE set_float   (id IN PLS_INTEGER, name IN VARCHAR2,
   value IN  FLOAT),
 MEMBER PROCEDURE set_int     (id IN PLS_INTEGER, name IN VARCHAR2,
   value IN  PLS_INTEGER), 
 MEMBER PROCEDURE set_long    (id IN PLS_INTEGER, name IN VARCHAR2,
   value IN  NUMBER),
 MEMBER PROCEDURE set_short   (id IN PLS_INTEGER, name IN VARCHAR2,
   value IN  PLS_INTEGER),
 MEMBER PROCEDURE set_string  (id IN PLS_INTEGER, name IN VARCHAR2,
   value IN  VARCHAR2),
 MEMBER PROCEDURE set_string  (id IN  PLS_INTEGER, name IN VARCHAR2,
   value IN  CLOB),
 MEMBER FUNCTION get_boolean  (id IN PLS_INTEGER, name IN VARCHAR2)
   RETURN BOOLEAN,
 MEMBER FUNCTION  get_byte    (id IN PLS_INTEGER, name IN VARCHAR2) 
   RETURN PLS_INTEGER,
 MEMBER PROCEDURE get_bytes   (id IN PLS_INTEGER, name IN VARCHAR2,
   value OUT NOCOPY BLOB),
 MEMBER FUNCTION get_char     (id IN PLS_INTEGER, name IN VARCHAR2) RETURN CHAR,
 MEMBER FUNCTION get_double   (id IN PLS_INTEGER, name IN VARCHAR2)
   RETURN DOUBLE PRECISION,
 MEMBER FUNCTION get_float   (id IN PLS_INTEGER, name IN VARCHAR2) RETURN FLOAT,
 MEMBER FUNCTION get_int     (id IN PLS_INTEGER, name IN VARCHAR2)
   RETURN PLS_INTEGER,
 MEMBER FUNCTION get_long    (id IN PLS_INTEGER, name IN VARCHAR2) 
   RETURN NUMBER,
 MEMBER FUNCTION get_short   (id IN PLS_INTEGER, name IN VARCHAR2) 
   RETURN PLS_INTEGER,
 MEMBER PROCEDURE get_string (id IN PLS_INTEGER, name IN VARCHAR2,
   value OUT NOCOPY CLOB),
 MEMBER FUNCTION get_names   (id IN PLS_INTEGER) RETURN aq$_jms_namearray,
 MEMBER FUNCTION get_names   (id IN PLS_INTEGER, names OUT aq$_jms_namearray,
   offset IN  PLS_INTEGER, length IN  PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER PROCEDURE get_object (id IN PLS_INTEGER, name IN  VARCHAR2,
   value  OUT NOCOPY AQ$_JMS_VALUE), 
 MEMBER FUNCTION get_size    (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER FUNCTION item_exists (id IN PLS_INTEGER, name IN VARCHAR2)
   RETURN BOOLEAN);

CONSTRUCTファンクション

STATIC FUNCTION construct RETURN aq$_jms_map_message

空のaq$_jms_map_messageオブジェクトを作成します。

JMSヘッダー・メソッド

set_replyto (replyto IN sys.aq$_agent)

JMSのJMSReplyToに対応するreplytoパラメータを設定します。

set_type (type IN VARCHAR)

JMSのJMSTypeに対応するJMSタイプを設定します(任意のテキストを設定できます)。

get_replyto RETURN sys.aq$_agent

JMSReplyToに対応するreplytoを戻します。

get_type RETURN VARCHAR

JMSTypeに対応するtypeを戻します。

システム・プロパティ・メソッド

set_userid (userid IN VARCHAR)

JMSのJMSXUserIDに対応するuseridを設定します。

set_appid (appid IN VARCHAR)

JMSのJMSXAppIDに対応するappidを設定します。

set_groupid (groupid IN VARCHAR)

JMSのJMSXGroupIDに対応するgroupidを設定します。

set_groupseq (groupseq IN INT)

JMSのJMSXGroupSeqに対応するgroupseqを設定します。

get_userid RETURN VARCHAR

JMSXUserIDに対応するuseridを戻します。

get_appid RETURN VARCHAR

JMSXAppIDに対応するappidを戻します。

get_groupid RETURN VARCHAR

JMSXGroupIDに対応するgroupidを戻します。

get_groupseq RETURN NUMBER

JMSXGroupSeqに対応するgroupseqを戻します。

ユーザー・プロパティ・メソッド

clear_properties

すべてのユーザー・プロパティをクリアします。このプロシージャは、システムのプロパティに影響を与えません。

set_boolean_property (property_name IN VARCHAR, property_value IN BOOLEAN)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを内部表記に格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_byte_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-128から127(8ビット)の範囲内であるかどうかをチェックします。PL/SQLまたはRDBMSではBYTEデータ・タイプが定義されないため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_double_property (property_name IN VARCHAR, property_value IN DOUBLE PRECISION)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_float_property (property_name IN VARCHAR, property_value IN FLOAT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_int_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-2147483648から2147483647(32ビット)の範囲内であるかどうかをチェックします。PL/SQLおよびOracle DatabaseでのINTデータ・タイプは38ビットであるため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_long_property (property_name IN VARCHAR, property_value IN NUMBER)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。PL/SQLおよびOracle DatabaseでのNUMBERデータ・タイプは38ビットです。JavaでのLONGデータ・タイプは64ビットです。したがって、値の範囲チェックは必要ありません。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が発生します。

set_short_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-32768から32767(16ビット)の範囲内であるかどうかをチェックします。PL/SQLまたはRDBMSではSHORTデータ・タイプが定義されないため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_string_property (property_name IN VARCHAR, property_value IN VARCHAR)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

get_boolean_property (property_name IN VARCHAR) RETURN BOOLEAN

対応するプロパティ名が存在し、かつ、そのプロパティがBOOLEANプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_byte_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがBYTEプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_double_property (property_name IN VARCHAR) RETURN DOUBLE PRECISION

対応するプロパティ名が存在し、かつ、そのプロパティがDOUBLEプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_float_property (property_name IN VARCHAR) RETURN FLOAT

対応するプロパティ名が存在し、かつ、そのプロパティがFLOATプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_int_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがINTEGERプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_long_property (property_name IN VARCHAR) RETURN NUMBER

対応するプロパティ名が存在し、かつ、そのプロパティがLONGプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_short_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがSHORTプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_string_property (property_name IN VARCHAR) RETURN VARCHAR

対応するプロパティ名が存在し、かつ、そのプロパティがSTRINGプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

ペイロード・メソッド

set_bytes (payload IN RAW)

ペイロードを、解釈することなくRAW変数として設定します。aq$_jms_map_messageのペイロードは、RAWまたはBLOBのどちらかとしてデータベースに格納されます。このメンバー・ファンクションは、ペイロードを解釈することなく、RAW変数として設定します。

set_bytes (payload IN BLOB)

ペイロードを、解釈することなくBLOB変数として設定します。aq$_jms_map_messageのペイロードは、RAWまたはBLOBのどちらかとしてデータベースに格納されます。このメンバー・ファンクションは、ペイロードを解釈することなく、BLOB変数として設定します。

get_bytes (payload OUT RAW)

ペイロードを、解釈することなくRAW変数に設定します。aq$_jms_map_messageのペイロードは、RAWまたはBLOBのどちらかとしてデータベースに格納されます。このメンバー・ファンクションは、ペイロードを解釈することなく、RAW変数として取り出します。ペイロードの長さが32767を超える場合は、ORA-24190が発生します。

get_bytes (payload OUT BLOB)

ペイロードを、解釈することなくBLOB変数に設定します。aq$_jms_map_messageのペイロードは、RAWまたはBLOBのどちらかとしてデータベースに格納されます。このメンバー・ファンクションは、ペイロードを解釈することなく、BLOB変数として取り出します。

prepare (id IN PLS_INTEGER) RETURN PLS_INTEGER

aq$_jms_map_messageに格納されたバイト配列を、JavaオブジェクトとしてJavaストアド・プロシージャにデコードします。デコード結果は、Jservセッション・メモリーに静的な変数として格納されます。パラメータidは、Javaオブジェクトが格納されているOracle Database JVMセッション・メモリー内の場所を特定するために使用されます。idがNULLの場合は、PL/SQLオブジェクトに対して新しいスロットが作成されます。ペイロードにおけるこれ以降のJMS操作では、この操作IDが必要となります。

Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、操作IDが無効な場合はORA-24198が、またJavaストアド・プロシージャのメッセージ・ストアがオーバーフローするとORA-24199が発生します。

flush (id IN PLS_INTEGER)

Jservの静的な変数のコンテンツをaq$_jms_map_messageと同期化します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

clear_body (id IN PLS_INTEGER)

Javaストアド・プロシージャの静的な変数を空のペイロードに設定します。パラメータidは、Javaオブジェクトが格納されているOracle Database JVMセッション・メモリー内の場所を特定するために使用されます。idがNULLの場合は、PL/SQLオブジェクトに対して新しいスロットが作成されます。ペイロードにおけるこれ以降のJMS操作では、この操作IDが必要となります。

Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、操作IDが無効な場合はORA-24198が、またJavaストアド・プロシージャのメッセージ・ストアがオーバーフローするとORA-24199が発生します。

clean (id IN PLS_INTEGER)

Javaストアド・プロシージャ側で操作IDに対応するDataInputStreamまたはDataOutputStreamをクローズし、クリーンアップします。このプロシージャをコールすることは、メモリー・リークの防止に非常に重要です。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

clean_all

Javaストアド・プロシージャ側で、対応するタイプのメッセージ・ストアに含まれるすべてのメッセージをクローズし、クリーンアップします。このプロシージャでは、実行中にJavaストアド・プロシージャが例外をスローした場合、ORA-24197が発生します。

set_boolean (id IN PLS_INTEGER, name IN VARCHAR2, value IN BOOLEAN)

ブール値を、指定された名前でマップに設定します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_byte (id IN PLS_INTEGER, name IN VARCHAR2, value IN PLS_INTEGER)

BYTE値を、指定された名前でマップに設定します。PL/SQLにはBYTEタイプが存在しないため、PLS_INTEGERを使用してBYTEを表示します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_bytes (id IN PLS_INTEGER, name IN VARCHAR2, value IN RAW)

バイト配列値を、指定された名前でマップに設定します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_bytes (id IN PLS_INTEGER, name IN VARCHAR2, value IN RAW, offset IN INT, length IN INT)

バイト配列値の一部を、指定された名前でマップに設定します。パラメータoffsetはバイト配列で最初のオフセットで、パラメータlengthは使用するバイト数です。[offset … offset+length]がバイト配列値の範囲を超えた場合、Javaストアド・プロシージャでJava IndexOutOfBounds例外がスローされ、このプロシージャによりORA-24197エラーが発生します。索引は0から開始します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_bytes (id IN PLS_INTEGER, name IN VARCHAR2, value IN BLOB)

バイト配列値を、指定された名前でマップに設定します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_bytes (id IN PLS_INTEGER, name IN VARCHAR2, value IN BLOB, offset IN INT, length IN INT)

バイト配列値の一部を、指定された名前でマップに設定します。パラメータoffsetはバイト配列で最初のオフセットで、パラメータlengthは使用するバイト数です。[offset … offset+length]がバイト配列値の範囲を超えた場合、Javaストアド・プロシージャでJava IndexOutOfBounds例外がスローされ、このプロシージャによりORA-24197エラーが発生します。索引は0から開始します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_char (id IN PLS_INTEGER, name IN VARCHAR2, value IN CHAR)

文字値を、指定された名前でマップに設定します。値に複数の文字が設定されている場合は、最初の文字が使用されます。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_double (id IN PLS_INTEGER, name IN VARCHAR2, value IN DOUBLE PRECISION)

DOUBLE値を、指定された名前でマップに設定します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_float (id IN PLS_INTEGER, name IN VARCHAR2, value IN FLOAT)

このプロシージャは、FLOAT値を指定された名前でマップに設定します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_int (id IN PLS_INTEGER, name IN VARCHAR2, value IN PLS_INTEGER)

INT値を、指定された名前でマップに設定します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_long (id IN PLS_INTEGER, name IN VARCHAR2, value IN NUMBER)

LONG値を、指定された名前でマップに設定します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_short (id IN PLS_INTEGER, name IN VARCHAR2, value IN PLS_INTEGER)

SHORT値を、指定された名前でマップに設定します。PL/SQLにはSHORTタイプが存在しないため、PLS_INTEGERを使用してSHORTを表示します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_string (id IN PLS_INTEGER, name IN VARCHAR2, value IN VARCHAR2)

文字列値を、指定された名前でマップに設定します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

set_string (id IN PLS_INTEGER, name IN VARCHAR2, value IN CLOB)

文字列値を、指定された名前でマップに設定します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_boolean (id IN PLS_INTEGER, name IN VARCHAR2) RETURN BOOLEAN

指定した名前のブール値を取り出します。この名前の項目が存在しない場合は、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_byte (id IN PLS_INTEGER, name IN VARCHAR2) RETURN PLS_INTEGER

指定した名前のBYTE値を取り出します。この名前の項目が存在しない場合は、NULLが戻されます。PL/SQLにはBYTEタイプが存在しないため、PLS_INTEGERを使用してBYTEを表示します。PL/SQLユーザーがPLS_INTEGERを取得しても、その値はJava BYTE値の範囲内です。この値がset_byteファンクションにより発行されている場合、範囲外エラーにはなりません。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_bytes (id IN PLS_INTEGER, name IN VARCHAR2, value OUT NOCOPY BLOB)

指定した名前のバイト配列値を取り出します。この名前の項目が存在しない場合は、NULLが戻されます。配列サイズはPL/SQL RAWタイプの上限を超える場合があるため、BLOBが常に戻されます。BLOBのコピーが戻された場合は、メッセージ・ペイロードに影響を与えることなく変更できます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_char (id IN PLS_INTEGER, name IN VARCHAR2) RETURN CHAR

指定した名前の文字列値を取り出して、戻します。この名前の項目が存在しない場合は、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合は、ORA-24194が発生します。

get_double (id IN PLS_INTEGER, name IN VARCHAR2) RETURN DOUBLE PRECISION

指定した名前のDOUBLE値を取り出して、戻します。この名前の項目が存在しない場合は、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合は、ORA-24194が発生します。

get_float (id IN PLS_INTEGER, name IN VARCHAR2) RETURN FLOAT

指定した名前のFLOAT値を取り出します。この名前の項目が存在しない場合は、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_int (id IN PLS_INTEGER, name IN VARCHAR2) RETURN PLS_INTEGER

指定した名前のINT値を取り出します。この名前の項目が存在しない場合は、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_long (id IN PLS_INTEGER, name IN VARCHAR2) RETURN NUMBER

指定した名前のLONG値を取り出します。この名前の項目が存在しない場合は、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_short (id IN PLS_INTEGER, name IN VARCHAR2) RETURN PLS_INTEGER

指定した名前のSHORT値を取り出します。この名前の項目が存在しない場合は、NULLが戻されます。PL/SQLにはSHORTタイプが存在しないため、INTを使用してSHORTを表示します。PL/SQLユーザーがPLS_INTEGERを取得しても、その値はJava SHORT値の範囲内です。この値がset_shortファンクションにより発行されている場合、範囲外エラーにはなりません。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_string (id IN PLS_INTEGER, name IN VARCHAR2, value OUT NOCOPY CLOB)

指定した名前の文字列値を取り出します。この名前の項目が存在しない場合は、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_names (id IN PLS_INTEGER) RETURN aq$_jms_namearray

マップ・メッセージ内のすべての名前を取り出し、VARRAYに戻します。aq$_jms_namearrayのサイズは1024で各エレメントはVARCHAR(200)であるため、ペイロードの名前配列が上限を超えているとエラーが戻されます。名前配列または名前のサイズが上限を超えた場合は、ORA-24195が発生します。

get_names (id IN PLS_INTEGER, names OUT aq$_jms_namearray, offset IN PLS_INTEGER, length IN PLS_INTEGER) RETURN PLS_INTEGER

マップ・メッセージ内の名前の一部を取り出します。aq$_jms_namearrayのサイズは1024で、各エレメントはVARCHAR(200)であるため、取り出す際にどちらかが上限を超えているとエラーが戻されます。(つまり、1024を超える値をlengthパラメータに設定することはできません。)マップ・メッセージの名前の索引は0から開始します。パラメータoffsetは、取出しを開始するオフセットです。

ファンクションは、取り出した名前の数を戻します。間隔[offset, offset+length-1]と間隔[0, size-1](sizeはマップ・メッセージのサイズ)の共通部分が名前として取り出されます。共通部分が空のセットの場合、名前はNULL、取り出した名前の数は0で戻されます。小さなステップで名前の取出しを繰り返すと、マップ・メッセージから読み取る名前が残っているかどうかテストできます。

名前配列または名前のサイズが上限を超えている場合はORA-24195が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_object (id IN PLS_INTEGER, name IN VARCHAR2, value OUT NOCOPY AQ$_JMS_VALUE)

一般的な値であるADT AQ$_JMS_VALUEを戻します。この名前の項目が存在しない場合はNULLが戻されます。このADTのtype属性を使用すると、データを解析できます。dbms_jms_plsqlパッケージ定数、Javaデータ・タイプおよびAQ$_JMS_VALUE属性の対応値は、AQ$_JMS_VALUE ADTのマップを参照してください。このメンバー・プロシージャは、他のgetメンバー・プロシージャまたはファンクションに比べ、オーバーヘッドが多くなることがあることに注意してください。メッセージ内のフィールドのデータ・タイプがあらかじめわかっていない場合にのみ使用します。そうでない場合は、特定のgetメンバー・プロシージャまたはファンクションの使用をお薦めします。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

get_size (id IN PLS_INTEGER) RETURN PLS_INTEGER

マップ・メッセージのサイズを取り出します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

item_exists (id IN PLS_INTEGER, name IN VARCHAR2) RETURN BOOLEAN

TRUEが戻されると、このマップ・メッセージに項目が存在することを示します。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

SYS.AQ$_JMS_STREAM_MESSAGEタイプ

このタイプは、StreamMessageをOracle Databaseアドバンスト・キューイングのキューに格納するためのADTです。

この項では、次の項目について説明します。

構文

TYPE aq$_jms_stream_message AS object(
 header     aq$_jms_header,
 bytes_len  int,
 bytes_raw  raw(2000),
 bytes_lob  blob,
 STATIC FUNCTION  construct RETURN aq$_jms_stream_message,
 MEMBER PROCEDURE set_replyto  (replyto IN sys.aq$_agent),
 MEMBER PROCEDURE set_type     (type    IN VARCHAR),
 MEMBER FUNCTION get_replyto  RETURN sys.aq$_agent,
 MEMBER FUNCTION get_type     RETURN VARCHAR,
 MEMBER PROCEDURE set_userid   (userid   IN VARCHAR),
 MEMBER PROCEDURE set_appid    (appid    IN VARCHAR),
 MEMBER PROCEDURE set_groupid  (groupid  IN VARCHAR),
 MEMBER PROCEDURE set_groupseq (groupseq IN INT),
 MEMBER FUNCTION get_userid   RETURN VARCHAR,
 MEMBER FUNCTION get_appid    RETURN VARCHAR,
 MEMBER FUNCTION get_groupid  RETURN VARCHAR,
 MEMBER FUNCTION get_groupseq RETURN INT,
 MEMBER PROCEDURE clear_properties,
 MEMBER PROCEDURE set_boolean_property(property_name IN VARCHAR,
   property_value IN BOOLEAN),
 MEMBER PROCEDURE set_byte_property   (property_name IN VARCHAR,
   property_value IN INT),
 MEMBER PROCEDURE set_double_property (property_name IN VARCHAR,
   property_value IN DOUBLE PRECISION),
 MEMBER PROCEDURE set_float_property  (property_name IN VARCHAR,
   property_value IN FLOAT),
 MEMBER PROCEDURE set_int_property    (property_name IN VARCHAR,
   property_value IN INT),
 MEMBER PROCEDURE set_long_property   (property_name IN VARCHAR,
   property_value IN NUMBER),
 MEMBER PROCEDURE set_short_property  (property_name IN VARCHAR,
   property_valuE IN INT),
 MEMBER PROCEDURE set_string_property (property_name IN VARCHAR,
   property_value IN VARCHAR),
 MEMBER FUNCTION get_boolean_property (property_name IN VARCHAR) RETURN BOOLEAN,
 MEMBER FUNCTION get_byte_property    (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_double_property  (property_name IN VARCHAR) 
   RETURN DOUBLE PRECISION,
 MEMBER FUNCTION get_float_property   (property_name IN VARCHAR) RETURN FLOAT,
 MEMBER FUNCTION get_int_property     (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_long_property    (property_name IN VARCHAR) RETURN NUMBER,
 MEMBER FUNCTION get_short_property   (property_name IN VARCHAR) RETURN INT,
 MEMBER FUNCTION get_string_property  (property_name IN VARCHAR) RETURN VARCHAR,
 MEMBER PROCEDURE set_bytes           (payload IN RAW),
 MEMBER PROCEDURE set_bytes           (payload IN BLOB),
 MEMBER PROCEDURE get_bytes           (payload OUT RAW),
 MEMBER PROCEDURE get_bytes           (payload OUT BLOB),
 MEMBER FUNCTION  prepare             (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER PROCEDURE reset               (id IN PLS_INTEGER),
 MEMBER PROCEDURE flush               (id IN PLS_INTEGER),
 MEMBER PROCEDURE clear_body          (id IN PLS_INTEGER),
 MEMBER PROCEDURE clean               (id IN PLS_INTEGER),
 STATIC PROCEDURE clean_all,
 MEMBER FUNCTION  get_mode       (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER FUNCTION  read_boolean   (id IN PLS_INTEGER) RETURN BOOLEAN,
 MEMBER FUNCTION  read_byte      (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER FUNCTION  read_bytes     (id IN PLS_INTEGER) RETURN BLOB,
 MEMBER PROCEDURE read_bytes     (id IN PLS_INTEGER, value OUT NOCOPY BLOB),
 MEMBER FUNCTION  read_char      (id IN PLS_INTEGER) RETURN CHAR,
 MEMBER FUNCTION  read_double    (id IN PLS_INTEGER) RETURN DOUBLE PRECISION,
 MEMBER FUNCTION  read_float     (id IN PLS_INTEGER) RETURN FLOAT,
 MEMBER FUNCTION  read_int       (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER FUNCTION  read_long      (id IN PLS_INTEGER) RETURN NUMBER,
 MEMBER FUNCTION  read_short     (id IN PLS_INTEGER) RETURN PLS_INTEGER,
 MEMBER FUNCTION  read_string RETURN CLOB,
 MEMBER PROCEDURE read_string    (id IN PLS_INTEGER, value OUT NOCOPY CLOB),
 MEMBER PROCEDURE read_object    (id IN PLS_INTEGER, 
   value OUT NOCOPY AQ$_JMS_VALUE),
 MEMBER PROCEDURE write_boolean  (id IN PLS_INTEGER, value IN BOOLEAN),
 MEMBER PROCEDURE write_byte     (id IN PLS_INTEGER, value IN INT),
 MEMBER PROCEDURE write_bytes    (id IN PLS_INTEGER, value IN RAW),
 MEMBER PROCEDURE write_bytes    (id IN PLS_INTEGER, value IN RAW, 
   offset IN INT, length IN INT),
 MEMBER PROCEDURE write_bytes    (id IN PLS_INTEGER, value IN BLOB),
 MEMBER PROCEDURE write_bytes    (id IN PLS_INTEGER, value IN BLOB,
   offset IN INT, length IN INT),
 MEMBER PROCEDURE write_char     (id IN PLS_INTEGER, value IN CHAR),
 MEMBER PROCEDURE write_double   (id IN PLS_INTEGER, value IN DOUBLE PRECISION),
 MEMBER PROCEDURE write_float    (id IN PLS_INTEGER, value IN FLOAT),
 MEMBER PROCEDURE write_int      (id IN PLS_INTEGER, value IN PLS_INTEGER),
 MEMBER PROCEDURE write_long     (id IN PLS_INTEGER, value IN NUMBER),
 MEMBER PROCEDURE write_short    (id IN PLS_INTEGER, value IN PLS_INTEGER),
 MEMBER PROCEDURE write_string   (id IN PLS_INTEGER, value IN VARCHAR2),
 MEMBER PROCEDURE write_string   (id IN PLS_INTEGER, value IN CLOB));

CONSTRUCTファンクション

STATIC FUNCTION construct RETURN aq$_jms_stream_message

空のaq$_jms_stream_messageオブジェクトを作成します。

JMSヘッダー・メソッド

set_replyto (replyto IN sys.aq$_agent)

JMSのJMSReplyToに対応するreplytoパラメータを設定します。

set_type (type IN VARCHAR)

JMSのJMSTypeに対応するJMSタイプを設定します(任意のテキストを設定できます)。

get_replyto RETURN sys.aq$_agent

JMSReplyToに対応するreplytoを戻します。

get_type RETURN VARCHAR

JMSTypeに対応するtypeを戻します。

システム・プロパティ・メソッド

set_userid (userid IN VARCHAR)

JMSのJMSXUserIDに対応するuseridを設定します。

set_appid (appid IN VARCHAR)

JMSのJMSXAppIDに対応するappidを設定します。

set_groupid (groupid IN VARCHAR)

JMSのJMSXGroupIDに対応するgroupidを設定します。

set_groupseq (groupseq IN INT)

JMSのJMSXGroupSeqに対応するgroupseqを設定します。

get_userid RETURN VARCHAR

JMSXUserIDに対応するuseridを戻します。

get_appid RETURN VARCHAR

JMSXAppIDに対応するappidを戻します。

get_groupid RETURN VARCHAR

JMSXGroupIDに対応するgroupidを戻します。

get_groupseq RETURN NUMBER

JMSXGroupSeqに対応するgroupseqを戻します。

ユーザー・プロパティ・メソッド

clear_properties

すべてのユーザー・プロパティをクリアします。このプロシージャは、システムのプロパティに影響を与えません。

set_boolean_property (property_name IN VARCHAR, property_value IN BOOLEAN)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを内部表記に格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_byte_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-128から127(8ビット)の範囲内であるかどうかをチェックします。PL/SQLまたはRDBMSではBYTEデータ・タイプが定義されないため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_double_property (property_name IN VARCHAR, property_value IN DOUBLE PRECISION)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_float_property (property_name IN VARCHAR, property_value IN FLOAT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

set_int_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-2147483648から2147483647(32ビット)の範囲内であるかどうかをチェックします。PL/SQLおよびOracle DatabaseでのINTデータ・タイプは38ビットであるため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_long_property (property_name IN VARCHAR, property_value IN NUMBER)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。PL/SQLおよびOracle DatabaseでのNUMBERデータ・タイプは38ビットです。JavaでのLONGデータ・タイプは64ビットです。したがって、値の範囲チェックは必要ありません。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が発生します。

set_short_property (property_name IN VARCHAR, property_value IN INT)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueが-32768から32767(16ビット)の範囲内であるかどうかをチェックします。PL/SQLまたはRDBMSではSHORTデータ・タイプが定義されないため、このチェックが必要です。プロパティ名が存在する場合はORA-24191が、プロパティ名がNULLの場合はORA-24192が、またプロパティ値が有効な範囲を超えている場合はORA-24193が発生します。

set_string_property (property_name IN VARCHAR, property_value IN VARCHAR)

property_nameがNULLか存在するかをチェックします。存在しない場合は、property_valueを格納します。プロパティ名が存在する場合はORA-24191が、またプロパティ名がNULLの場合はORA-24192が発生します。

get_boolean_property (property_name IN VARCHAR) RETURN BOOLEAN

対応するプロパティ名が存在し、かつ、そのプロパティがBOOLEANプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_byte_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがBYTEプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_double_property (property_name IN VARCHAR) RETURN DOUBLE PRECISION

対応するプロパティ名が存在し、かつ、そのプロパティがDOUBLEプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_float_property (property_name IN VARCHAR) RETURN FLOAT

対応するプロパティ名が存在し、かつ、そのプロパティがFLOATプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_int_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがINTEGERプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_long_property (property_name IN VARCHAR) RETURN NUMBER

対応するプロパティ名が存在し、かつ、そのプロパティがLONGプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_short_property (property_name IN VARCHAR) RETURN INT

対応するプロパティ名が存在し、かつ、そのプロパティがSHORTプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

get_string_property (property_name IN VARCHAR) RETURN VARCHAR

対応するプロパティ名が存在し、かつ、そのプロパティがSTRINGプロパティである場合は、プロパティの値が戻されます。それ以外の場合はNULLが戻されます。

ペイロード・メソッド

get_bytes (payload OUT RAW)

ペイロードを、解釈することなくRAW変数に設定します。aq$_jms_stream_messageタイプのペイロードは、RAWまたはBLOBのどちらかとしてデータベースに格納されます。このメンバー・ファンクションは、ペイロードを解釈することなく、RAW変数として取り出します。ペイロードの長さが32767を超える場合は、ORA-24190が発生します。

get_bytes (payload OUT BLOB)

ペイロードを、解釈することなくBLOB変数に設定します。aq$_jms_stream_messageタイプのペイロードは、RAWまたはBLOBのどちらかとしてデータベースに格納されます。このメンバー・ファンクションは、ペイロードを解釈することなく、BLOBとして取り出します。

set_bytes (payload IN RAW)

ペイロードを、解釈することなくRAW変数として設定します。aq$_jms_stream_messageタイプのペイロードは、RAWまたはBLOBのどちらかとしてデータベースに格納されます。このメンバー・ファンクションは、ペイロードを解釈することなく、RAW変数として設定します。

set_bytes (payload IN BLOB)

ペイロードを、解釈することなくBLOB変数として設定します。aq$_jms_stream_messageタイプのペイロードは、RAWまたはBLOBのどちらかとしてデータベースに格納されます。このメンバー・ファンクションは、ペイロードを解釈することなく、BLOBとして設定します。

prepare (id IN PLS_INTEGER) RETURN PLS_INTEGER

aq$_jms_stream_messageに格納されたバイト配列を、JavaオブジェクトとしてJavaストアド・プロシージャにデコードします。デコード結果は、Jservセッション・メモリーに静的な変数として格納されます。パラメータidは、Javaオブジェクトが格納されているOracle Database JVMセッション・メモリー内の場所を特定するために使用されます。idがNULLの場合は、PL/SQLオブジェクトに対して新しいスロットが作成されます。ペイロードにおけるこれ以降のJMS操作では、この操作IDが必要となります。

また、このファンクションは、メッセージ・アクセス・モードをMESSAGE_ACCESS_READONLYに設定します。write_XXXプロシージャの後続のコールにより、ORA-24196エラーが発生します。clear_bodyプロシージャをコールすると、メッセージ・アクセス・モードをMESSAGE_ACCESS_READONLYに設定できます。

Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、操作IDが無効な場合はORA-24198が、またJavaストアド・プロシージャのメッセージ・ストアがオーバーフローするとORA-24199が発生します。

reset (id IN PLS_INTEGER)

最初にストリームの開始位置をリセットし、ストリーム・メッセージをMESSAGE_ACCESS_READONLYモードに設定します。

flush (id IN PLS_INTEGER)

Jservの静的な変数のコンテンツをaq$_jms_stream_messageと同期化します。このプロシージャは、基盤のアクセス・モードには影響を与えません。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

clear_body (id IN PLS_INTEGER)

Javaストアド・プロシージャの静的な変数を空のペイロードに設定します。パラメータidは、Javaオブジェクトが格納されているOracle Database JVMセッション・メモリー内の場所を特定するために使用されます。idがNULLの場合は、PL/SQLオブジェクトに対して新しいスロットが作成されます。ペイロードにおけるこれ以降のJMS操作では、この操作IDが必要となります。

また、メッセージ・アクセス・モードをMESSAGE_ACCESS_WRITEONLYに設定します。read_XXXプロシージャの後続のコールにより、ORA-24196エラーが発生します。resetまたはprepareプロシージャをコールすると、メッセージ・アクセス・モードをMESSAGE_ACCESS_READONLYに設定できます。書込み専用および読取り専用モードは、AQ$_JMS_BYTES_MESSAGEのペイロード・ファンクションにのみ反映されます。ヘッダー・ファンクションには影響を与えません。

Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、操作IDが無効な場合はORA-24198が、またJavaストアド・プロシージャのメッセージ・ストアがオーバーフローするとORA-24199が発生します。

clean (id IN PLS_INTEGER)

Javaストアド・プロシージャ側で操作IDに対応するDataInputStreamまたはDataOutputStreamをクローズし、クリーンアップします。このプロシージャをコールすることは、メモリー・リークの防止に非常に重要です。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

clean_all

Javaストアド・プロシージャ側で、対応するタイプのメッセージ・ストアに含まれるすべてのメッセージをクローズし、クリーンアップします。このプロシージャでは、実行中にJavaストアド・プロシージャが例外をスローした場合、ORA-24197が発生します。

get_mode (id IN PLS_INTEGER) RETURN PLS_INTEGER

このメッセージの現行モードを戻します。戻り値は、SYS.dbms_aqjms.READ_ONLYまたはSYS.dbms_aqjms.WRITE_ONLYのどちらかです。Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_boolean (id IN PLS_INTEGER) RETURN BOOLEAN

ストリーム・メッセージのブール値を読み取り、戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_byte (id IN PLS_INTEGER) RETURN PLS_INTEGER

ストリーム・メッセージのバイト値を読み取り、戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。PL/SQLにはBYTEタイプが存在しないため、INTを使用してBYTEを表示します。PL/SQLユーザーがINTを取得しても、その値はJava BYTE値の範囲内です。この値がwrite_byteファンクションにより発行されている場合、範囲外エラーにはなりません。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_bytes (id IN PLS_INTEGER) RETURN BLOB

ストリーム・メッセージのバイト配列を読み取り、戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が発生します。

read_bytes (id IN PLS_INTEGER, value OUT NOCOPY BLOB)

ストリーム・メッセージのバイト配列を読み取ります。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_char (id IN PLS_INTEGER) RETURN CHAR

ストリーム・メッセージの文字値を読み取り、戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_double (id IN PLS_INTEGER) RETURN DOUBLE PRECISION

ストリーム・メッセージのDOUBLEを読み取り、戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_float (id IN PLS_INTEGER) RETURN FLOAT

ストリーム・メッセージのFLOAT値を読み取り、戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_int (id IN PLS_INTEGER) RETURN PLS_INTEGER

ストリーム・メッセージのINT値を読み取り、戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_long (id IN PLS_INTEGER) RETURN NUMBER

ストリーム・メッセージのLONG値を読み取り、戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_short (id IN PLS_INTEGER) RETURN PLS_INTEGER

ストリーム・メッセージのSHORT値を読み取り、戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。PL/SQLにはSHORTタイプが存在しないため、PLS_INTEGERを使用してSHORTを表示します。PL/SQLユーザーがINTを取得しても、その値はJava SHORT値の範囲内です。この値がwrite_shortファンクションにより発行されている場合、範囲外エラーにはなりません。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_string RETURN CLOB

ストリーム・メッセージの文字列を読み取り、戻します。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が発生します。

read_string (id IN PLS_INTEGER, value OUT NOCOPY CLOB)

ストリーム・メッセージの文字列を読み取ります。メッセージ・ストリームの末尾に到達すると、NULLが戻されます。実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

read_object (id IN PLS_INTEGER, value OUT NOCOPY AQ$_JMS_VALUE)

一般的な値であるADT AQ$_JMS_VALUEを戻します。このADTのtype属性を使用すると、データを解析できます。dbms_jms_plsqlパッケージ定数、Javaデータ・タイプおよびAQ$_JMS_VALUE属性の対応値は、表274-2を参照してください。このメンバー・プロシージャは、他のreadメンバー・プロシージャまたはファンクションに比べ、オーバーヘッドが多くなることがあります。メッセージ内のフィールドのデータ・タイプがあらかじめわかっていない場合にのみ使用します。そうでない場合は、特定のreadメンバー・プロシージャまたはファンクションの使用をお薦めします。

実際の値のタイプと予想されるタイプとの変換が無効な場合はORA-24194が、ストリーム・メッセージが書込み専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_boolean (id IN PLS_INTEGER, value IN BOOLEAN)

ブールをストリーム・メッセージに書き込みます。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_byte (id IN PLS_INTEGER, value IN INT)

バイトをストリーム・メッセージに書き込みます。PL/SQLにはBYTEタイプが存在しないため、INTを使用してBYTEを表示します。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_bytes (id IN PLS_INTEGER, value IN RAW)

バイト配列フィールドをストリーム・メッセージに書き込みます。連続して書き込まれたバイト配列フィールドは、個別の2つのフィールドとして読み取られます。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_bytes (id IN PLS_INTEGER, value IN RAW, offset IN INT, length IN INT)

バイト配列フィールドの一部を、バイト配列フィールドとしてストリーム・メッセージに書き込みます。連続して書き込まれたバイト配列フィールドは、個別の2つのフィールドとして読み取られます。パラメータoffsetはバイト配列で最初のオフセットで、パラメータlengthは使用するバイト数です。[offset, offset+length]がバイト配列値の範囲を超えた場合、Javaストアド・プロシージャでJava IndexOutOfBounds例外がスローされます。索引は0から開始します。

ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_bytes (id IN PLS_INTEGER, value IN BLOB)

バイト配列フィールドをストリーム・メッセージに書き込みます。連続して書き込まれたバイト配列フィールドは、個別の2つのフィールドとして読み取られます。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_bytes (id IN PLS_INTEGER, value IN BLOB, offset IN INT, length IN INT)

バイト配列フィールドの一部を、バイト配列フィールドとしてストリーム・メッセージに書き込みます。連続して書き込まれたバイト配列フィールドは、個別の2つのフィールドとして読み取られます。パラメータoffsetはバイト配列で最初のオフセットで、パラメータlengthは使用するバイト数です。[offset, offset+length]がバイト配列値の範囲を超えた場合、Javaストアド・プロシージャでJava IndexOutOfBounds例外がスローされます。索引は0から開始します。

ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_char (id IN PLS_INTEGER, value IN CHAR)

文字値をストリーム・メッセージに書き込みます。値に複数の文字が設定されている場合は、最初の文字が書き込まれます。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_double (id IN PLS_INTEGER, value IN DOUBLE PRECISION)

DOUBLEをストリーム・メッセージに書き込みます。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_float (id IN PLS_INTEGER, value IN FLOAT)

FLOATをストリーム・メッセージに書き込みます。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_int (id IN PLS_INTEGER, value IN PLS_INTEGER)

INTをストリーム・メッセージに書き込みます。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_long (id IN PLS_INTEGER, value IN NUMBER)

LONGをストリーム・メッセージに書き込みます。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_short (id IN PLS_INTEGER, value IN PLS_INTEGER)

SHORTをストリーム・メッセージに書き込みます。PL/SQLにはSHORTタイプが存在しないため、INTを使用してSHORTを表示します。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_string (id IN PLS_INTEGER, value IN VARCHAR2)

文字列をストリーム・メッセージに書き込みます。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

write_string (id IN PLS_INTEGER, value IN CLOB)

文字列をストリーム・メッセージに書き込みます。ストリーム・メッセージが読取り専用モードの場合はORA-24196が、Javaストアド・プロシージャが実行中に例外をスローした場合はORA-24197が、また操作IDが無効な場合はORA-24198が発生します。

SYS.AQ$_JMS_OBJECT_MESSAGEタイプ

このタイプは、ObjectMessageをOracle Databaseアドバンスト・キューイングのキューに格納するためのADTです。

構文

TYPE aq$_jms_object_message AS object(
  header     aq$_jms_header,
  bytes_len  int,
  bytes_raw  raw(2000),
  bytes_lob  blob);

SYS.AQ$_JMS_NAMEARRAYタイプ

このタイプは、aq$_jms_map_messageget_namesプロシージャから戻される名前配列を表示します。このタイプの名前の最大数は1024です。各名前の最大長は200文字です。

構文

CREATE OR REPLACE TYPE AQ$_JMS_NAMEARRAY AS VARRAY(1024) OF VARCHAR(100);

使用上の注意

メッセージ・ペイロードの名前配列が1024を超える場合は、次のファンクションを使用して複数の部分に含まれる名前を取り出します。

MEMBER FUNCTION get_names(id IN PLS_INTEGER, names OUT aq$_jms_namearray,
   offset IN PLS_INTEGER, length IN PLS_INTEGER) RETURN PLS_INTEGER;

SYS.AQ$_JMS_VALUEタイプ

このタイプは、aq$_jms_map_messageget_objectプロシージャおよびaq$_jms_stream_messageread_objectプロシージャから戻される一般データを表示します。このADTのtypeフィールドは、このオブジェクトが保持しているデータ・タイプの決別に使用されます。表274-2に、sys.dbms_jms_plsqlタイプの定数、対応するJavaタイプ、およびデータを効率的に保持するADT aq$_jms_valueのデータ・フィールド間のマッピングを示します。

構文

CREATE OR REPLACE TYPE AQ$_JMS_VALUE AS object(
 type      number(2),
 num_val   number,
 char_val  char(1),
 text_val  clob,
 bytes_val blob);

表274-2 AQ$_JMS_VALUEタイプのフィールドおよびJavaフィールド

タイプ Javaタイプ aq$_jms_valueデータ・フィールド

DBMS_JMS_PLSQL.DATA_TYPE_BYTE

BYTE

num_val

DBMS_JMS_PLSQL.DATA_TYPE_SHORT

SHORT

num_val

DBMS_JMS_PLSQL.DATA_TYPE_INTEGER

INT

num_val

DBMS_JMS_PLSQL.DATA_TYPE_LONG

LONG

num_val

DBMS_JMS_PLSQL.DATA_TYPE_FLOAT

FLOAT

num_val

DBMS_JMS_PLSQL.DATA_TYPE_DOUBLE

DOUBLE

num_val

DBMS_JMS_PLSQL.DATA_TYPE_BOOLEAN

BOOLEAN

num_val:

0 FALSE, 1 TRUE

DBMS_JMS_PLSQL.DATA_TYPE_CHARACTER

CHAR

char_val

DBMS_JMS_PLSQL.DATA_TYPE_STRING

java.lang.String

text_val

DBMS_JMS_PLSQL.DATA_TYPE_BYTES

byte[]

bytes_val


SYS.AQ$_JMS_EXCEPTIONタイプ

このタイプは、Javaストアド・プロシージャ側でスローされるJava例外を表示します。idフィールドは、将来使用するために予約されています。exp_nameフィールドはJava例外名、err_msgフィールドはJava例外のエラー・メッセージ、stackフィールドはJava例外のスタック・トレースを格納します。

構文

CREATE OR REPLACE TYPE AQ$_JMS_EXCEPTION AS OBJECT (
   id          number, -- Reserved and not used. Right now always return 0.
   exp_name    varchar(200),
   err_msg     varchar(500),
   stack       varchar(4000));