Grant execute on specific type in Oracle I have created a package and defined a type for collections as follows:

create or replace package &lt;schema&gt;.&lt;package&gt; as 

-------------------------------------
   type &lt;type&gt; is table of &lt;something&gt;;
-------------------------------------

...
   function &lt;func&gt;(
      ...
      &lt;param&gt; in &lt;type&gt;,
      ...
    )
      return pls_integer;
...


I have a user that has to call this function but can't because apparently they don't have the permission to execute type collection. I could solve it by

GRANT EXECUTE ANY TYPE TO &lt;user&gt;;


but I am bound by security protocols that says no user has to have access to any data, schema, blueprint or object unless they certainly have to. So I want to give the user explicit grant on specific type &lt;type&gt;, but calling the following statement results in error:

GRANT EXECUTE TYPE ON &lt;schema&gt;.&lt;package&gt;.&lt;type&gt; to &lt;user&gt;;

Error report -
SQL Error: ORA-00990: missing or invalid privilege
00990. 00000 -  "missing or invalid privilege"
*Cause:    
*Action:
You need to grant EXECUTE on package itself. If security is your main concern you may create a new package that has just types, but you cannot specify that a given user can access only some objects defined in package specification - either all or none.