I thought I had a similar problem, but it didn't seem to help even if prefixing the type name.
In user A:
create or replace type OBJ AS object
(
a Char(20),
b Date,
c Date
);
create or replace type objTable
AS Table of Obj;
Grant execute on obj to B;
Grant execute on objTable to B;
From Delphi, logged in as B:
TOracleObject.Create(Session, '"A.OBJTABLE"', '');
fails, with the error message ORA-04043
(This is code which was originally generated using the package wizard, and then changed adding the prefix A. )
However, if I remove the "" around the name, it works:
TOracleObject.Create(Session, 'A.OBJTABLE', '');
If I now remove the prefix, however (thus trying to use B's private synonym to this type), another error message appears: "ORA-24372: Invalid object for describe".
So the code generated by the package wizard in this case is not valid.
With regards, Helene