Выберите имя переменной таблицы - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь написать несколько операторов SQL для запросов к базе данных Microsoft Dynamics Nav.Я пытаюсь написать сценарии, которые я могу легко использовать в разных базах Nav.Имена таблиц для каждой базы данных уникальны тем, что в имени таблицы всегда указывается имя клиента, за которым следует $ имя таблицы.Так, например, если название компании ABC Company, в таблице Rating будет ABC Company $ Rating, а в другой базе данных для компании XYZ это будет XYZ Company_ $ Rating.Есть предложения?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Мне непонятно, почему имена таблиц различны, поскольку таблицы каждого клиента, похоже, находятся в отдельной базе данных.Если вы можете избежать называть таблицы по-разному для каждого клиента, я бы предложил.

Однако, если вы должны предоставить эти ориентированные на клиента имена таблиц, возможно, вы могли бы также создать набор представлений для каждой таблицы с именем «базовой» таблицы, например,

create view Rating as select * from ACME$Rating;

Затем напишитевсе ваши скрипты, использующие эти представления.

0 голосов
/ 23 октября 2018

Я нашел один способ сделать это (хотя это действительно неуклюже) с использованием динамического SQL.Недостатком этого является то, что для написания простого оператора select требуется много кода, и контекст сценария не проверяется на наличие ошибок, как если бы обычный сценарий был:

DECLARE @Company TABLE (id INT IDENTITY, Имя NVARCHAR (30)

1004 *
...