• 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
  • 相关阅读:
    【数组】Unique Paths II
    【数组】Unique Paths
    【数组】word search
    购物网站布局实战
    Javascript显示和隐式类型转换
    JS检测数据类型
    从setTimeout谈js运行机制
    0.1 + 0.2 = 0.30000000000000004怎样理解
    (译)详解javascript立即执行函数表达式(IIFE)
    Redis
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5057099.html
Copyright © 2020-2023  润新知