暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle DBA_OBJECTS和dba_procedses条目不匹配

ASKTOM 2019-07-25
1124

问题描述

我查询DBA_OBJECTS表,发现dba_projects表中存在的packages下的所有过程的名称在DBA_OBJECTS表中不存在为对象。DBA_OBJECTS中的包只有一个条目,而包中的过程没有条目。

DBA_OBJECTS中有一个名为SUBOBJECT_NAME的列。我假设当涉及到包中的过程时,OBJECT_NAME将是包名称,SUBOBJECT_NAME将是过程名称。

程序不是Oracle中的单个对象吗?为什么软件包下的程序与独立程序不同?

OWNER                      OBJECT_NAME                      OBJECT_ID OBJECT_TYPE   PROCEDURE_NAME              SUBPROGRAM_ID
-------------------------- ------------------------------- ---------- ------------- --------------------------- -------------
ABCD_OWNER                 P_DAIETRICS                         146838 PROCEDURE                                             1
ABCD_OWNER                 EXISTS_PARTIN                       146837 PROCEDURE                                             1
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_DEALERS2                          1
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_PROPOSALS2                        2
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_PROP_PARTY_ANEX                   3
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_MODEL_DERIV                       4
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_STATUS_CHANGES                    5
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_STATUS_BREAKDOWN                  6
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_PROPOSAL_DELICH                   7
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_RAMDONEES_INFO                    8
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_VEHICLE_BLOW                      9
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_TRADING_CHOPS                    10
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_PRODUCTS2                        11
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_PROP_RAMIF                       12
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_PRODUSIL_UW                      13
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_HIST_DWELL                       14
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_AGGREMLIN_DAY                    15
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_AGGREMLIN_HOUR                   16
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_PIGSTAAL_BREAK                   17
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       GOPHS_NEWDAB_LVOMMENSTS                18
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       CHECKRAINTREE                          19
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE       P_DEL_USEFELNEW                        20
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE                                               0
ABCD_OWNER                 PK_BIES                             146836 PACKAGE                                               0



DBA_OBJECTS
OWNER                      OBJECT_NAME                      OBJECT_ID OBJECT_TYPE   SUBOBJECT_NAME
-------------------------- ------------------------------- ---------- ------------- ------------------------------
ABCD_OWNER                 PK_PHASE                            146835 PACKAGE
ABCD_OWNER                 PK_BIES                             146836 PACKAGE
ABCD_OWNER                 EXISTS_PARTIN                       146837 PROCEDURE
ABCD_OWNER                 P_DAIETRICS                         146838 PROCEDURE
ABCD_OWNER                 PK_BIES                             147312 PACKAGE BODY
ABCD_OWNER                 PK_PHASE                            147313 PACKAGE BODY

专家解答

在Oracle中,* package * 是对象,而不是其中的子组件例程 (过程,函数,类型,游标,常量等)。

包级别是有意义的,因为我们做的事情

-创建同义词
-分配赠款
-编译

全部位于包/包主体,而不是子组件级别。

同样,独立的过程或函数是一个对象,原因与上述相同。它们可以是同义词,被授予等。

希望这有所帮助。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论