2015-04-29 122 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块内同样会失败。

相关问题