我正在尝试创建下面的varray但是因为必须声明“table.column”而得到错误。
create or replace TYPE ARY_ABC AS VARRAY(15) OF TABLE.COLUMN%TYPE;
如果我直接使用TABLE.COLUMN的数据类型,它的工作原理非常好。 VARRAY
不支持%type
属性吗?
答案 0 :(得分:1)
这是不支持%TYPE
表示法的SQL语言。这是一个PL / SQL功能,编译器在编译时查找类型详细信息并为您构建所需的代码。除了create as select
表和视图外,SQL中没有等效项。
编辑,发表评论:
你是说在编译期间,编译器会找到
TYP_USER_DEFINED_OBJECT
但不是TABLE.COLUMN%TYPE
的含义?
没有。 PL / SQL编译器在编译时查找%TYPE
表达式的详细信息,并为您构建所需的代码,就像您自己键入了所有VARCHAR2和NUMBER等一样。另一方面,TYP_USER_DEFINED_OBJECT
由SQL CREATE TYPE
语句定义和发布。您可以将其视为SQL语言的一部分。
顺便说一句,table
通常是比varray
更有用的集合类型,除非15的限制对于执行某些规则非常有用。