我在 OracleXE db 中有 2 个用户:ALICE
和BOB
. 以下步骤序列在我的本地机器上是成功的:
- 连接为
ALICE
- 创建顶级类型:(
create or replace type testtype as object(x number(16));
编辑:更正错误的名称 foo 误导了 Matthew McPeak) - 连接为
BOB
BOB
看到ALICE
's 类型:select * from all_types
返回行declare x ALICE.testtype; begin null; end;
编译
在类型对 不可见的情况下应用于我们的开发数据库产生相同的步骤BOB
,即选择不返回该类型的行,PLSQL 块编译失败并PLS-00201: identifier 'ALICE.TESTTYPE' must be declared
出现错误。
我需要使类型可见,所以我问:什么可能导致这种差异?(我猜想需要对类型或公共同义词进行授权,但是这个简约的例子证明相反。)用户/会话的某些属性?尽管我希望解决方案是微不足道的,但我在谷歌搜索方面尽了最大努力,现在卡住了。两个数据库都是 Oracle 11g(11.2.0.1.0 开发,11.2.0.2.0 本地)。
谢谢!