Разные имена таблиц в разных базах данных?

Извините за очень простой вопрос. Предположим, у вас есть база данных oracle с системой sap в организации, тогда при написании запросов на выбор будут ли имена таблиц базы данных отличаться?

Предположим, что если я получаю данные из стандартной таблицы sap vbak, тогда на самом деле данных здесь не будет, верно? Поскольку я использую базу данных Oracle, данные торгового документа будут храниться в какой-то таблице базы данных Oracle, верно? Итак, как вы можете написать запрос выбора только с vbak (например, с таблицей базы данных sap)?

С уважением.


person I_code    schedule 26.02.2015    source источник
comment
Я только понимаю, что вы пытаетесь обойти логику приложения и получить прямой доступ к базе данных. Есть множество ответов, указывающих на то, почему это очень плохая идея [TM].   -  person vwegert    schedule 26.02.2015
comment
Выберите vbeln из vbak в таблицу it_vbak, где vbeln = 1000. если это запрос, то мы извлекаем данные из таблицы vbak, верно? Итак, это таблица sap, но у меня не будет данных в таблице sap, потому что я использую базу данных oracle, тогда имя таблицы, в которой хранится это поле vbeln, может отличаться в базе данных oracle, верно? @vwegert   -  person I_code    schedule 26.02.2015
comment
насколько мне известно, имена таблиц на уровне базы данных такие же, как в словаре данных SAP, по крайней мере, для прозрачных таблиц. Таблицы пула и другие специфичные для DDIC конструкции не существуют в базе данных так же, как в DDIC. Таблицы должны принадлежать пользователю sapsr3. Имейте в виду, что доступ к базе данных напрямую обходит любую бизнес-логику и специфичные для SAP функции, такие как кеширование. И вы должны убедиться, что сами выбрали правильные данные клиента (таблица базы данных VBAK содержит записи для всех клиентов, тогда как SELECT в клиенте 100 будет возвращать только строки для этого клиента).   -  person Dirk Trilsbeek    schedule 26.02.2015


Ответы (2)


Все таблицы в словаре данных имеют те же имена, что и их физические представления в серверной СУБД. Как любезно заметил Фил, этой СУБД может быть MS SQL, MySQL, а также Oracle.
Вот как это объясняется в Документация ABAP:

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

Так что ответ на ваш вопрос будет «нет, их имена не могут быть разными». Имя прозрачной таблицы VBAK будет идентично таблице Oracle VBAK, и их содержимое также будет идентичным.

person Suncatcher    schedule 27.11.2015

Операторы OPEN SQL в SAP используют информацию из словаря данных, а само ядро ​​зависит от типа базы данных.

Таким образом, один и тот же код ABAP может работать в MSSQL, Oracle, MySQL Db2 и т. Д.

Вы можете использовать NATIVE SQL, специфичный для БД, но это редко и не рекомендуется.

person phil soady    schedule 05.03.2015