Oracle для PostgreSQL — что эквивалентно «tab» в PostgreSQL?

#sql #oracle #postgresql

#sql #Oracle #postgresql

Вопрос:

Я конвертирую некоторые материалы из Oracle в PostgreSQL.

У меня есть такое утверждение:

 select * from tab;
 

Я имею в виду tab здесь.

Например, select * from tab в Oracle предоставляет мне то, что я предполагаю, как список всех объектов, таблиц и представлений; все.

Это не работает в Postgres, и я, похоже, не могу найти подходящую замену.

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

1. я предполагаю, что это список всех объектов, таблиц и представлений — вы имеете в виду, что это не задокументировано? Я нашел это из ссылки на Oracle 7 (1996) : «Это представление включено для совместимости с Oracle версии 5. Использование этого представления не рекомендуется «. Он уже устарел в 1996 году. Пусть это впитается.

2. select * from pg_tables или select * from information_schema.tables

Ответ №1:

Это представление Oracle определяется как

 select o.name,
      decode(o.type#, 2, 'TABLE', 3, 'CLUSTER', 150, 'HIERARCHY', 152, 'ANALYTIC VIEW',
         4, 'VIEW', 5, 'SYNONYM'), t.tab#
  from  sys.tab$ t, sys."_CURRENT_EDITION_OBJ" o
  where o.owner# = userenv('SCHEMAID')
  and o.type# >=2
  and o.type# <=5
  and o.linkname is null
  and o.obj# = t.obj# ( )
 

Таким образом, в схеме перечислены таблицы и т. Д. С тем же именем, что и у пользователя.

Вы могли бы получить что-то подобное из стандартной базы данных, соответствующей

 SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = current_user;