Why can i not call COUNT on a varray column in a select statement using oracle
10.2 documentation: Using Collection Methods


  The following apply to collection methods:
  
  
  Collection methods cannot be called from SQL statements.
  
  
  ...


11.2 documentation: Collection Methods


  A collection method invocation can appear anywhere that an invocation
  of a PL/SQL subprogram of its type (function or procedure) can appear,
  except in a SQL statement.


Versions before 12c:

SQL&gt; CREATE OR REPLACE TYPE "LIST_OF_NAMES_T" IS  VARRAY(10) OF VARCHAR2 (100);
  2  /

Type created.

SQL&gt; create table table1(c1 LIST_OF_NAMES_T);

Table created.

SQL&gt; insert into table1 values(LIST_OF_NAMES_T('A', 'B'));

1 row created.

SQL&gt; commit;

SQL&gt; create function f1(p_list_of_names list_of_names_t) return number as
  2  begin
  3    return p_list_of_names.count;
  4  end;
  5  /

Function created.

SQL&gt; select f1(items) from table1;

 F1(ITEMS)
----------
         2


In 12c and later, you can define functions on the fly, so this also works:

SQL&gt; with function f2(p_list_of_names list_of_names_t) return number as
  2  begin
  3   return p_list_of_names.count;
  4  end;
  5  select f2(items) from table1;
  6  /

 F2(ITEMS)
----------
         2