Reflexão em PLSQL?

Eu estou escrevendo um procedimento para lidar com o objeto definido pelo usuário que é armazenado em ANYDATA. O tipo de objeto e o nome do atributo só podem ser conhecidos em tempo de execução, portanto, não posso definir o viarável para ele na seção declarar. Em Java, eu posso usar a reflexão para lidar com isso, eu posso saber o nome da classe e o nome dos campos. Então eu posso acessar os campos através da reflexão. Existe alguma maneira de fazê-lo em PLSQL assim? O que na minha cabeça agora é criar uma string sql no procedimento dinamicamente e executá-lo. Mas não é exatamente o que eu quero.

Digamos que o usuário A definiu um tipo de ADT comocreate or replace type Person_type as object (fname varchar2(10), lname varchar2(10)); e crie uma instância de objeto e insira-a em ANYDATA.

No meu procedimento, de alguma forma eu sei que preciso lidar com o primeiro atributo deste objeto, que é fname. Então, se conhecer o tipo adt em primeiro lugar, meu código será como:

<code>declare
  adobject A.Person_type; -- HERE! I don't know the type yet, so I can't define adobject!
  tempAnydata anydata;
  rt number;
  vbuffer varchar2(10);
  ...
begin
   select somecolumn 
   into tempAnydata 
   from sometable 
   where something='something' for update;

   rt := tempAnydata.GetObject(adobject);

   vbuffer := adobject.fname; -- HERE! I don't know the attribute name is fname!
   -- deal with vbuffer here
end;
</code>

Então, o que devo fazer para dinamicamente? Desde já, obrigado.

questionAnswers(1)

yourAnswerToTheQuestion