Odbicie w PLSQL?

Piszę procedurę radzenia sobie z obiektem zdefiniowanym przez użytkownika, który jest przechowywany w ANYDATA. Typ obiektu i nazwa atrybutu mogą być znane tylko w czasie wykonywania, więc nie mogę zdefiniować tego dla niego w sekcji deklaracji. W Javie mogę użyć refleksji, aby sobie z tym poradzić, znam nazwę klasy i pola. Wtedy mogę uzyskać dostęp do pól poprzez odbicie. Czy jest jakiś sposób na zrobienie tego w PLSQL w ten sposób? W mojej głowie dynamicznie tworzy się ciąg znaków sql w procedurze i wykonuję go. Ale to nie jest dokładnie to, czego chcę.

Załóżmy, że użytkownik A zdefiniował typ ADT jakocreate or replace type Person_type as object (fname varchar2(10), lname varchar2(10)); i utwórz instancję obiektu i wstaw ją do ANYDATA.

W mojej procedurze wiem, że muszę poradzić sobie z pierwszym atrybutem tego obiektu, którym jest fname. Jeśli więc znasz typ adt, mój kod będzie wyglądał następująco:

<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>

Co zatem powinienem zrobić, aby zrobić to dynamicznie? Z góry dziękuję.

questionAnswers(1)

yourAnswerToTheQuestion