2010-02-10 1 views
1

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

ответ

4

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

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

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

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