Как получить информацию о пользовательском типе? - PullRequest
9 голосов
/ 19 сентября 2011

Для простоты, PL / SQL обычно следуют следующему:

DECLARE 
     Variable declaration
BEGIN 
     Program Execution 
EXCEPTION 
     Exception handling
END;

Я совершенно новичок в PL / SQL, и я просматриваю раздел объявления переменных, где я хотел бы узнать больше информации о SALES_PRODUCT_TY_LIST.

Есть ли таблица, которую я могу посмотреть, чтобы проверить информацию о SALES_PRODUCT_TY_LIST, такую ​​как проверка информации о столбце таблицы из представления all_tab_cols?

CREATE OR REPLACE PROCEDURE GET_DISCOUNTS
(
  v_have_list SALES_PRODUCT_TY_LIST
)
IS
  QUERY VARCHAR(5000);
...

Спасибо.

Ответы [ 4 ]

12 голосов
/ 19 сентября 2011

База данных Oracle имеет обширный словарь данных (что некоторые другие продукты СУБД называют ИНФОРМАЦИОННОЙ СХЕМОЙ).Вы можете найти все виды здесь .Увы, пересмотренная структура ToC затрудняет поиск чего-либо в документации 11g, если вы уже не знаете, что ищете, поэтому вместо этого используйте индекс .8 -)

В любом случае, запрашиваемые представления: ALL_TYPES и ALL_TYPE_ATTRS .

10 голосов
/ 19 сентября 2011

Кажется, это определенный пользователем тип коллекции. Вы можете найти некоторую информацию об этом, запросив all_types / user_types view:

select * from user_types where type_name = 'SALES_PRODUCT_TY_LIST'

Определение типа можно найти, например, запросом all_source / user_source view:

select text from user_source where name = 'SALES_PRODUCT_TY_LIST' order by line
5 голосов
/ 19 сентября 2011

Попробуйте получить DDL:

SELECT dbms_log.substr(dbms_metadata.get_ddl('TYPE', 'SALES_PRODUCT_TY_LIST'), 32767,1) 
FROM DUAL;

см .: http://www.myoracleguide.com/s/gen_schema.htm

1 голос
/ 19 сентября 2011

Хорошо, я нашел кое-что:

select * 
from all_objects
where object_name like 'SALES%';
...