OracleXE db:ALICE
とに 2 人のユーザーがいますBOB
。次の一連の手順は、ローカル マシンで成功します。
- として接続
ALICE
- トップレベルの型を作成します:
create or replace type testtype as object(x number(16));
(編集: Matthew McPeak を誤解させた間違った名前 foo からの修正) - として接続
BOB
BOB
のタイプを確認しALICE
ます:select * from all_types
行を返しますdeclare x ALICE.testtype; begin null; end;
コンパイルする
開発データベースに同じ手順を適用すると、型が に見えない状況BOB
、つまり select が型の行を返さない状況で生成され、PLSQL ブロックのコンパイルがPLS-00201: identifier 'ALICE.TESTTYPE' must be declared
エラーで失敗します。
タイプを可視化する必要があるので、質問します。この違いの原因は何ですか? (タイプまたはパブリック シノニムに対する許可が必要であると推測しましたが、この最小限の例では反対のことが証明されています。) ユーザー/セッションのプロパティは? 私はグーグルで最善を尽くしましたが、解決策が簡単であることを願っていますが、今は立ち往生しています。どちらのデータベースも Oracle 11g (11.2.0.1.0 dev、11.2.0.2.0 ローカル) です。
ありがとう!