zoukankan      html  css  js  c++  java
  • Oracle 11g对依赖的推断达到字段级

         在Oracle 10g下,推断依赖性仅仅达到了对象级。也就是说存储过程訪问的对象一旦发生了变化。那么Oracle就会将存储过程置为INVALID状态。所以在为表做了DDL操作后。须要把存储过程又一次进行编译。

           在Oracle 11g下,对依赖的推断更加细化,推断到了字段级。尽管有这么好的特性。但我还是建议对表做了DDL操作后,把存储过程再又一次编译一下。

    Oracle 10g下:

    SQL> select * from v$version;

    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
    PL/SQL Release 10.2.0.1.0 - Production
    CORE    10.2.0.1.0      Production
    TNS for 64-bit Windows: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
    SQL> drop table TEST purge;
    SQL> drop PROCEDURE P_TEST;
    SQL> CREATE TABLE TEST(ID NUMBER);
    SQL> CREATE OR REPLACE PROCEDURE P_TEST AS
          BEGIN
            INSERT INTO TEST (ID) VALUES (100);
          END;
          /
    SQL> col OBJECT_NAME format a10;
    SQL> col OBJECT_TYPE format a10;
    SQL> col STATUS format a10;
    SQL> SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_NAME = 'P_TEST';
    OBJECT_NAM OBJECT_TYP STATUS
    ---------- ---------- ----------
    P_TEST     PROCEDURE  VALID
    SQL> ALTER TABLE TEST ADD (NAME VARCHAR2(30));
    SQL> SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_NAME = 'P_TEST';
    OBJECT_NAM OBJECT_TYP STATUS
    ---------- ---------- ----------
    P_TEST     PROCEDURE  INVALID

    Oracle 11g下:
    SQL> select * from v$version;
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    PL/SQL Release 11.2.0.1.0 - Production
    CORE    11.2.0.1.0      Production
    TNS for Linux: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production

    SQL> drop table TEST purge;
    SQL> drop PROCEDURE P_TEST;
    SQL> CREATE TABLE TEST(ID NUMBER);
    SQL> CREATE OR REPLACE PROCEDURE P_TEST AS
          BEGIN
            INSERT INTO TEST (ID) VALUES (100);
          END;
          /

    SQL> col OBJECT_NAME format a10;
    SQL> col OBJECT_TYPE format a10;
    SQL> col STATUS format a10;
    SQL> SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_NAME = 'P_TEST';
    OBJECT_NAM OBJECT_TYP STATUS
    ---------- ---------- ----------
    P_TEST     PROCEDURE  VALID
    SQL> ALTER TABLE TEST ADD (NAME VARCHAR2(30));
    SQL> SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS WHERE OBJECT_NAME = 'P_TEST';
    OBJECT_NAM OBJECT_TYP STATUS
    ---------- ---------- ----------
    P_TEST     PROCEDURE  VALID
  • 相关阅读:
    power designer 绘制E-R 图
    git 的证书重新设置,以及如何让git 记住提交的用户名和密码
    weblogic的安装和注意的问题以及在idea怎么用weblogic启动一个web服务
    java的URI和URL到底是什么
    怎么把centos虚拟机zip文件导入vm虚拟机中
    gogole调试请求体的数据怎么知道
    Javascript数据类型——number类型
    Javascript类型——boolean类型
    Javascript数据类型——undefined和null的异同
    第3章,基本概念
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5057099.html
Copyright © 2011-2022 走看看