查看我的数据库中的V$SQL,我刚刚发现了一个看起来很奇怪的查询:
UPDATE "MYTABLE" "A1" SET "SOMECOLUMN" = (
SELECT "A2"."ANOTHERCOLUMN"
FROM "ANOTHERTABLE"@! "A2"
WHERE "A2".ROWID=:B1
)
有人知道 @! 语法的含义吗?我以前在 Oracle 中从未见过这样的东西。谢谢。
查看我的数据库中的V$SQL,我刚刚发现了一个看起来很奇怪的查询:
UPDATE "MYTABLE" "A1" SET "SOMECOLUMN" = (
SELECT "A2"."ANOTHERCOLUMN"
FROM "ANOTHERTABLE"@! "A2"
WHERE "A2".ROWID=:B1
)
有人知道 @! 语法的含义吗?我以前在 Oracle 中从未见过这样的东西。谢谢。
alter system flush shared_pool;
select sysdate from dual@myself;
select sql_text from gv$sql where sql_fulltext like '%@!%';
SQL_TEXT
--------
SELECT SYSDATE@! FROM "DUAL" "A1"
在数据库中,@符号通常与数据库链接相关。例如,在Oracle中,我使用以下命令创建公共数据库链接:
create public database link mylink connect to remote_username identified by mypassword using 'tns_service_name';
如果用户(remote_username)在此之后有一个名为ANOTHERTABLE的表,则可以使用以下命令:
SELECT "A2"."ANOTHERCOLUMN" FROM "ANOTHERTABLE"@mylink "A2" WHERE "A2".ROWID=1
对于我来说,感叹号的用法不太清楚。通常情况下,感叹号是用来访问运行数据库客户端的shell。
希望这能帮到你。祝你好运!