Отражение в PLSQL?

Я пишу процедуру для работы с определяемым пользователем объектом, который хранится в ANYDATA. Тип объекта и имя атрибута могут быть известны только во время выполнения, поэтому я не могу определить для него переменную в разделе объявления. В Java я могу использовать отражение, чтобы справиться с этим, я могу знать имя класса и имя поля. Затем я могу получить доступ к полям через отражение. Есть ли способ сделать это в PLSQL? Что сейчас у меня в голове, так это динамическое создание строки sql в процедуре и ее выполнение. Но это не совсем то, чего я хочу.

Допустим, пользователь A определил тип ADT как create or replace type Person_type as object (fname varchar2(10), lname varchar2(10));, создал экземпляр объекта и вставил его в ANYDATA.

В моей процедуре я каким-то образом знаю, что мне нужно иметь дело с первым атрибутом этого объекта, которым является fname. Итак, если знать тип объявления в первую очередь, мой код будет похож на:

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;

Итак, что я должен сделать, чтобы сделать его динамическим? Заранее спасибо.

8
задан APC 19 April 2012 в 06:23
поделиться