2015-04-29 162 views
1

因此,如果嘗試這種anonymos塊:聲明嵌套表類型時,「AS」和「IS」有什麼區別?

DECLARE 
    TYPE nums IS TABLE OF integer; 
    nnum nums; 
BEGIN 
    nnum := nums(1,2); 
    dbms_output.put_line(nnum.COUNT); 
END; 

這個工作,但當此:TYPE nums IS TABLE OF我與AS取代IS,甲骨文提供了錯誤:

ORA-06550: Encountered the symbol "TABLE" when expecting ...

我的文檔看, 「AS」和「IS」都用於聲明嵌套表類型。

,甚至,from hereTo declare nested table types, use the CREATE TYPE ... AS TABLE OF statement

爲什麼要我是錯誤在我的情況下使用 「AS」?這裏有什麼不同?

回答

3

ASIS代名詞同時創造像功能,過程和程序包 PL/SQL對象。但是,在PL/SQL塊中聲明嵌套表類型時,有不是同義詞

因此,就您在創建對象類型時使用關鍵字而言,它們是同義詞。當您創建記錄類型時,您將發現相同的區別,您只能使用IS而不是AS

例如,您可以創建使用AS對象類型

SQL> create type nums AS object 
    2 (
    3 id integer 
    4 ) 
    5/

Type created. 

SQL> 
SQL> create type nnum AS table of nums 
    2/

Type created. 

SQL> 

但是,如果你創建一個記錄類型聲明它一個PL/SQL塊內同樣會失敗。

相關問題