О ref cursor и получении его атрибутов

Shtock
Дата: 21.12.2012 15:47:25
Народ, правильно ли я понял, что в 10-м оракле не получится получить атрибуты реф-курсора (например по http://stackoverflow.com/questions/10321571/oracle-select-a-specific-column-from-a-ref-cursor) хотя бы потому, что в 10-м дмбс_скул нет dbms_sql.to_cursor_number?
Sayan Malakshinov
Дата: 21.12.2012 15:50:34
Shtock,

Если про одно поле, то можно. Например, с помощью xmlsequence
-2-
Дата: 21.12.2012 15:52:46
Shtock,

атрибуты можно получить в oci/jdbc или, если только имена колонок и в нагрузку данные, - xmltype(cursor)
Shtock
Дата: 21.12.2012 15:53:18
Мне нужно получить весь список полей ref-cursora и их типы данных имея как входной параметр ref cursor, а так как в зависимости от входных параметров кол-во полей может быть разным, то пока куда копать в 10-ке тупо не ясно. а как я понял - тупо не возможно.

А в чём суть иде про xmlsequence или оно работает только если реф-курсор из одного поля?
Sayan Malakshinov
Дата: 21.12.2012 16:18:21
Shtock,

идея та же, что и
-2-
только имена колонок и в нагрузку данные, - xmltype(cursor)

тип данных с помощью xmlsequence не получить. Я вообще говорил только про select-a-specific-column-from-a-ref-cursor
Shtock
Дата: 21.12.2012 16:21:28
Типы данных - фиг с ними. МОжно всё вывести как строки... Попробую сейчас.
Shtock
Дата: 21.12.2012 16:28:31
Попытался сделать что-то типа

declare
 c sys_refcusor;
 x xmltype;
begin
 c := my_uber_Function(<set of parameters>);
 x := xmltype(c);
end;


В итоге оно вывалилось с ошибкой ora-06502 VAlue or numeric error at sys.xmltype line 344 и что с этим делать - неясно.
Shtock
Дата: 21.12.2012 16:48:01
Сделал полу-ректально используя магию:

   ctx := dbms_xmlgen.newContext (с);
   x:= dbms_xmlgen.getXMLType (ctx);
   dbms_xmlgen.closeContext (ctx);


где ctx - dbms_xmlgen.ctxHandle
Shtock
Дата: 21.12.2012 18:27:11
Блин, похоже эти методы тупо где-то проглатывают исключения. XML тупо пустой...
orawish
Дата: 21.12.2012 19:35:13
Shtock,

1)любой клиент оракловый (от веку) владеет интерфейсом для извлечения сабж. из курсора
2) пощите пакет sys.dbms_metadata_util - вероятно, его на 10g нет еще, но вдруг есть?