Имя базы данных при обращении к таблицам - Sybase - PullRequest
1 голос
/ 10 февраля 2010

Как мне избежать жесткого кодирования имени базы данных при обращении к таблице в хранимой процедуре. Например, есть две базы данных db1 и db2. Я пишу хранимую процедуру в db2, которая ссылается на две таблицы, одну из db1, а другую из db2. Оба находятся на одном сервере Sybase.

Ответы [ 2 ]

4 голосов
/ 11 февраля 2010

Если я правильно понимаю ваш вопрос, с одной стороны, в вашей хранимой процедуре вы можете обратиться к таблице в той же базе данных напрямую по имени

SELECT  ...
FROM    table_in_db2

Вы можете обратиться к таблице в базе данных db1, добавив префикс имени базы данных и пустого владельца:

SELECT  ...
FROM    db1..table_in_db1

С другой стороны, если вы хотите избегать жестко кодируемых имен баз данных в процедуре, вы можете создать представление в базе данных db2, которое ссылается на таблицу db1:

CREATE VIEW view_in_db2
AS
    SELECT  *
    FROM    db1..table_in_db1

и используйте это в процедуре:

SELECT  ...
FROM    view_in_db2
0 голосов
/ 12 февраля 2010

Вы должны сохранять код переносимым, задействовать 2 базы данных, но избегать ссылок на базы данных по имени. Затем вы можете создавать прокси-таблицы (или прокси-представления, если такие представления существуют в 12.5). Обратитесь к таблицам прокси как к локальным объектам.

Это будет работать, но потребует некоторого дополнительного внимания при каждом перемещении / изменении баз данных. Но, в любом случае, разделение интересов, к которым вы стремитесь, может быть достигнуто.

...