OracleXE を使用して CI サーバーで実行する Oracle データベースの一連の自動テストがあります。一部のテストでは、次のように AQ$_JMS_TEXT_MESSAGE タイプを使用します。
msg SYS.AQ$_JMS_TEXT_MESSAGE;
BEGIN
msg := SYS.AQ$_JMS_TEXT_MESSAGE.construct;
msg.set_text(pMessage);
以前は OracleXE 10g を使用していましたが、このデータベースが実行されている通常の Oracle サーバーと一致するように XE 11g にアップグレードしようとしています。残念ながら、OracleXE 11g ではこれらのタイプを有効にできないようです。それを使用してこれらのパッケージをコンパイルしようとすると、次のエラーが発生します。
1797/5 PL/SQL: Statement ignored
1797/37 PLS-00302: component 'CONSTRUCT' must be declared
1798/5 PL/SQL: Statement ignored
1798/9 PLS-00302: component 'SET_TEXT' must be declared
1799/5 PL/SQL: Statement ignored
OracleXE の 10g にもデフォルトでこれらのタイプがインストールされていませんでしたが、インストールにある次のスクリプトを実行して修正しました。
RDBMS\ADMIN\prvtaqal.plb
ただし、OracleXE 11g で実行した後でも、型を解決できません。JMS に関連する同じ場所にある他のファイルの内容も検索したところ、次の 2 つが見つかりました。
RDBMS\ADMIN\dbmsaqad.sql
RDBMS\ADMIN\prvtaqji.plb
それらをインストールしても効果はありませんでした。
OracleXE 11g で AQ$_JMS_TEXT_MESSAGE タイプを使用でき、これを回避する方法を知っている人はいますか? それとも、XE10g でそれを回避する機能は、現在塞がれている穴でしたか?