5

我试图确定这段代码在做什么(Oracle SQL)——尤其是子句中的at-sign 感叹号。from

INSERT INTO "LOCATIONS" "A1"
            ("LOCATION_ID",
             "SEQUENCE",
             "POINT_TYPE")
SELECT "A2"."LOCATION_ID",
       "A2"."SEQUENCE",
       "A2"."LOCATION_TYPE",
       "A2"."POINT_TYPE"
FROM   "LOCATIONS"@! "A2"
WHERE  NOT EXISTS (SELECT 1
                   FROM   "LOCATIONS" "A3"
                   WHERE  "A3"."LOCATION_ID" = "A2"."LOCATION_ID") 
4

2 回答 2

5

这是到执行查询的原始数据库的反向数据库链接。原始查询必须如下所示:

INSERT INTO LOCATIONS@remote_db
            ("LOCATION_ID",
             "SEQUENCE",
             "POINT_TYPE")
SELECT "A2"."LOCATION_ID",
       "A2"."SEQUENCE",
       "A2"."POINT_TYPE"
FROM   "LOCATIONS" A2
WHERE  NOT EXISTS (SELECT 1
                   FROM   LOCATIONS@remote_db A3
                   WHERE  "A3"."LOCATION_ID" = "A2"."LOCATION_ID");

这样,所有远程表都变为本地表,本地表变为远程“@!”。

于 2013-04-01T08:12:41.240 回答
-1

我认为这不是有效的 SQL。检查您的代码以确保在执行 SQL 之前没有任何更改 - 特别是检查数据库链接的名称是否被替换为!.

如果您无法确定正在执行的内容,您可以在数据库上进行跟踪

于 2012-07-26T14:35:54.640 回答