小编Eri*_*oon的帖子

为什么Oracle 12c中的datadictionary中缺少我的plsql代码?

任何人都可以了解我的12c笔记本电脑安装可能出现的问题导致以下问题吗?

简而言之:我在架构中创建的所有代码都在那里并且可以执行,但不能在任何IDE中查看或编辑,也不能通过dba_source查看或编辑.

首先:虽然我有一些DBA理解,但我不是DBA,也不会是DBA.
我是Oracle开发人员.所以我在安装12c时可以做各种愚蠢的事情.

我在笔记本电脑上安装了Oracle Database 12c企业版12.1.0.1.0 64位.
1个容器数据库.
1可插拔数据库.

当我在任何IDE(pl/sql developer .sql developer,...)中登录我的可插拔数据库时,所有对象都可以在所选IDE的"浏览器"中看到.
但是,当我尝试打开(查看源代码)基于plsql的对象(如packages/procedures/functions/types)时,我不能.
触发器是一个例外.可以查看和编辑它们.
plsql developer(10.0.5.1710)告诉我(例如):"/*PACKAGE ERO $ UTL的源代码不可用*/"
sql developer(4.0.3.16)只显示我:"创建或替换".

然而,这些物体可以正常使用.

起初我以为"plsql开发者还没准备好12c"
但是后来我看到sqldev做同样的事情,所以......

我检查了数据库/ datadictionary本身.

我创建了一个简单的过程:

ERO@EVROCS>CREATE OR REPLACE PROCEDURE hi_there  
  2  AS  
  3  BEGIN  
  4    dbms_output.put_line ('Hello World');  
  5  END;  
  6  /  

Procedure created.  
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.
它存在吗,有效吗?

ERO@EVROCS>exec hi_there  
Hello World  

PL/SQL procedure successfully completed.  
Run Code Online (Sandbox Code Playgroud)

显然它确实如此.

现在,user_objects知道它的存在吗?

ERO@EVROCS>SELECT object_name||' - '||object_type   object  
  2  FROM   user_objects  
  3  WHERE  object_name = 'HI_THERE';  

OBJECT  
-----------------------------------------------------------  

HI_THERE - PROCEDURE  

1 row …
Run Code Online (Sandbox Code Playgroud)

database plsql data-dictionary oracle-sqldeveloper oracle12c

7
推荐指数
1
解决办法
1907
查看次数