Выбор имени столбца из cols ничего не возвращает, хотя столбец существует

#sql #oracle #data-dictionary

#sql #Oracle #данные-словарь

Вопрос:

я пытаюсь выполнить это утверждение в Oracle 9i. Однако кажется, что результирующий набор пуст, хотя я очень уверен, что существует много столбцов с идентификатором имени.

 select * from cols where column_name like '%ID%';
  

Кроме того, следующий оператор возвращает пустой результирующий набор.

 select * from cols;
  

Могу ли я спросить, может ли это быть связано с привилегиями пользователя?

Спасибо!

Ответ №1:

В ссылке Oracle говорится о COLS:

 "COLS is a synonym for USER_TAB_COLUMNS."
  

Это предлагает простой ответ на вашу головоломку: вы подключены к базе данных через пользователя, который не владеет таблицами (или представлениями). Либо измените своего пользователя, либо попробуйте выбрать из ALL_TAB_COLUMNS (который показывает результаты из всех таблиц / представлений, к которым у вас есть привилегии).

Комментарии:

1. Я думаю, что где-то в строке перед вашим сообщением участник упомянул, что на это также может повлиять функция, называемая виртуальной частной базой данных, которая существует начиная с версии Oracle 8i, однако я думаю, что сообщение было удалено, APC у вас есть какие-либо комментарии по этому поводу? Пожалуйста. 🙂

2. @ChinBoon — Виртуальная частная база данных (ОНА же мелкозернистый контроль доступа) — это механизм для незаметного ограничения доступа к строкам данных — и столбцам после 10gR2 — путем определения дополнительных фильтров, которые применяются ко всем операторам DML. Проверьте DBMS_RL, чтобы узнать больше. Я не думаю, что это имеет отношение к вашей ситуации, потому что VPD не будет применен к словарю данных.