Восклицательный знак в SQL (Oracle)
Глядя на V $SQL в моей базе данных, я только что нашел странный запрос, который выглядит так:
UPDATE "MYTABLE" "A1" SET "SOMECOLUMN" = (
SELECT "A2"."ANOTHERCOLUMN"
FROM "ANOTHERTABLE"@! "A2"
WHERE "A2".ROWID=:B1
)
Кто-нибудь знает значение синтаксиса @!
Я никогда раньше не видел что-то подобное в Oracle
Спасибо
Ответы
Ответ 1
Это запрос, который возник из удаленной базы данных. База данных, в которой вы видели этот запрос в V $SQL, была указана в запросе в удаленной базе данных с использованием синтаксиса @DB_NAME
Удаленная база данных выполнила запрос к вашей базе данных для выполнения, но для ответа на запрос ваша база данных должна извлечь некоторую информацию из удаленной базы данных. Вот где @! приходит, в основном это ссылка на базу данных, где запрос возник из
Например, создайте ссылку тестовой базы данных даже в той же базе данных и запустите ее:
alter system flush shared_pool;
select sysdate from [email protected];
select sql_text from gv$sql where sql_fulltext like '%@!%';
SQL_TEXT
--------
SELECT [email protected]! FROM "DUAL" "A1"
Ответ 2
Часто @в базах данных связаны с ссылкой на базу данных.
Например. в Oracle я использую
создать ссылку на общую базу данных MyLink
подключиться к remote_username
определенных мой пароль
используя 'tns_service_name';
если после этого пользователя (remote_username) есть таблица ANOTHERTABLE, вы можете использовать:
ВЫБРАТЬ "A2" . "ANOTHERCOLUMN"
FROM "ANOTHERTABLE" @mylink "A2"
ГДЕ "A2" .ROWID = 1
Как! Знак используется здесь для меня непонятно. Обычно! знак - это то, что вы используете для доступа к оболочке, в которой работает клиент базы данных.
Я не знаю, это помогло вам. Удачи.