在pl sql中创建varray时无法使用table.column%类型

时间:2018-05-28 14:02:59

标签: plsql

我正在尝试创建下面的varray但是因为必须声明“table.column”而得到错误。

create or replace TYPE ARY_ABC AS VARRAY(15) OF TABLE.COLUMN%TYPE;

如果我直接使用TABLE.COLUMN的数据类型,它的工作原理非常好。 VARRAY不支持%type属性吗?

1 个答案:

答案 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的限制对于执行某些规则非常有用。