Как мне избежать жесткого кодирования имени базы данных при ссылке на таблицу в хранимой процедуре. Например, есть две базы данных db1 и db2. Я пишу хранимую процедуру в db2, которая ссылается на две таблицы: одну из db1 и другую из db2. Оба находятся на одном сервере sybase.Имя базы данных при ссылках на таблицы - Sybase
ответ
Если я правильно понимаю ваш вопрос, с одной стороны, в хранимой процедуре, Вы можете обратиться к таблице в той же базе данных непосредственно по имени
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
Вы должны держать код портативными, включать 2 базы данных, но избежать ссылок на базы данных по имени. Затем вы можете создавать прокси-таблицы (или прокси-представления, если такие представления существуют в 12.5). Обратитесь к прокси-таблицам как к локальным объектам.
Это будет работать, но потребует особой осторожности при каждом перемещении/изменении баз данных. Но в любом случае разделение проблем, которые вы после этого, может быть достигнуто.