Заменитель переменной Oracle - синоним - PullRequest
0 голосов
/ 27 августа 2010

Я хочу подставить переменную в oracle.

. Переменная приходит через SQLPlus и для ссылки используется & 1

& 1, в моем сценарии это имя схемы - вотSQL.

CREATE SYNONYM ACCOUNT FOR &1.ACCOUNT;

Предполагая, что & 1 равно ABC, созданный synonym предназначен для ABCAccount, а не ABC.Account.По какой-то причине период убирается.

Есть идеи почему?

Ответы [ 2 ]

8 голосов
/ 27 августа 2010

Период обрабатывается как завершение имени переменной.Это часто необязательно (например, когда после имени есть пробел), но иногда вам нужно иметь его, чтобы различать переменную и следующий бит текста.Скажем, вы на самом деле хотели получить строку ABCACCOUNT;если бы у вас было &1ACCOUNT, он запросил бы переменную с именем 1ACCOUNT, а это не то, что вам нужно.Точка сообщает ему, где заканчивается имя переменной.

В этом случае вам нужен период, чтобы показать конец переменной, а затем еще один, чтобы он рассматривался как схема:

CREATE SYNONYM ACCOUNT FOR &1..ACCOUNT;
0 голосов
/ 27 августа 2010
DECLARE
  schema_name VARCHAR2(30) := '&1';
BEGIN
    EXECUTE IMMEDIATE 'CREATE SYNONYM ACCOUNT FOR ' || schema_name || '.ACCOUNT';
END;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...