11gr2增強CREATE OR REPLACE TYPE功能
11.2對於CREATE OR REPLACE TYPE語句進行了增加,增加了FORCE選項。
在11.2之前,只要有其他的表或TYPE依賴了當前物件,這個物件就無法進行REPLACE了:
SQL> create type t_num_tab is table of number;
2 /
Type created.
SQL> create type t_record is object (id number, n_tab
t_num_tab);
2 /
Type created.
SQL> create or replace type t_num_tab is table of
number(5);
2 /
create or replace type t_num_tab is table of number(5);
*
ERROR at line 1:
ORA-02303: cannot drop or replace a type with type or table dependents
這是11.2之前的情況,嘗試執行CREATE OR REPLACE將會導致ORA-2303錯誤,在11.2中Oracle增加了FORCE功能,使得一個僅被TYPE所依賴的物件仍然可以執行REPLACE的操作:
SQL> create or replace type
t_num_tab force is table of number(5);
2 /
Type created.
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Solaris: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
有意思的是,FORCE語句的位置不對則不會生效,這時同樣會報ORA-2303的錯誤,而並不會導致語句錯誤:
SQL> create or replace force
type t_num_tab is table of number(5);
create or replace force type t_num_tab is table of number(5)
*
ERROR at line 1:
ORA-02303: cannot drop or replace a type with type or table dependents
SQL> create or replace type t_num_tab is table of number(5) force;
2 /
create or replace type t_num_tab is table of number(5) force;
*
ERROR at line 1:
ORA-02303: cannot drop or replace a type with type or table dependents
最後這個功能只對被TYPE所依賴的物件有效,一旦物件被表所依賴,則FORCE功能也不起作用:
SQL> create table t_type_tab (id
number, c_tab t_num_tab)
2 nested table c_tab store as c_tab_tab;
Table created.
SQL> create or replace type
t_num_tab force is table of number(6);
2 /
create or replace type t_num_tab force is table of number(6);
*
ERROR at line 1:
ORA-22866: cannot replace a type with table dependents
Oracle的錯誤資訊也變成了ORA-22866。其實這時可以預料的,因為一旦建立了表,就相當於進行了實體化的工作,如果依賴的型別發生了變化,將會影響表中已有的資料的讀寫。不過其實Oracle可以做到更進一步,就是如果表段沒有建立或者表中沒有插入資料的情況下,允許對依賴的物件進行修改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-735234/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11gr2新增CREATE OR REPLACE FORCE TYPE功能Oracle
- Oracle12c功能增強 新特性之管理功能的增強Oracle
- openGauss DSS功能增強
- oracle 11gR2 RAC crsctl 命令的增強Oracle
- create or replace view 報許可權不足View
- .NET Framework 新功能和增強的功能Framework
- Windows7安全增強功能Windows
- create or replace package body DBMS_ASSERT wrappedPackageAPP
- 精讀《Promise.all, Replace, Type Lookup...》Promise
- PostgreSQL10.0preview功能增強-國際化功能增強,支援ICU(InternationalComponentsforUnicode)SQLViewUnicode
- 功能強大!帶你走近Smartbi增強分析模組
- ORACLE 12C RMAN 功能增強Oracle
- 蘋果智慧:iOS 18 AI增強功能蘋果iOSAI
- VirtualBox安裝增強功能報錯
- VBox安裝增強功能報錯
- Spring 4.3 的新功能和增強Spring
- SQL 2005 得到增強的功能SQL
- How to create and relocate an 11gr2 RAC DATABASE SERVICEDatabase
- Ubuntu在Vbox中安裝增強功能Ubuntu
- Oracle11新特性——分割槽功能增強Oracle
- PostgreSQL10.0preview功能增強-OLAP增強向量聚集索引(列儲存擴充套件)SQLView索引套件
- .NET 7 Preview 3新增了這些增強功能View
- Mybatis 中如何優雅的增強日誌功能?MyBatis
- VS Code剛剛增強Java開發功能 - foojayJava
- 不用typsescript也能使用型別增強功能型別
- Oracle 12c中的轉換功能增強Oracle
- Oracle11gr2 AUDIT清除功能增強(三)Oracle
- Oracle 12c中增強的PL/SQL功能OracleSQL
- Oracle11gr2 AUDIT清除功能增強(四)Oracle
- Oracle11gr2 AUDIT清除功能增強(二)Oracle
- Oracle11gr2 AUDIT清除功能增強(一)Oracle
- Oracle11新特性——分割槽功能增強(五)Oracle
- Oracle11新特性——分割槽功能增強(四)Oracle
- Oracle11新特性——分割槽功能增強(三)Oracle
- Oracle11新特性——分割槽功能增強(二)Oracle
- Oracle11新特性——分割槽功能增強(一)Oracle
- FastWiki(增強AI對話功能)企業級智慧客服功能介紹ASTAI
- ORA-39117: Type needed to create table is not included in this operation