当我执行以下行时,我得到结果:
select * from my_table@link;
但是,当我尝试将链接表与其他表连接时,例如在选择中,我会收到错误,其中包含" z.id - 无效标识符"
SELECT
e.USER_NAME,e.FULL_NAME,r.RFC_NUMBER,r.TYPE,
TO_CHAR(TRUNC(a.TOTAL_TIME/3600),'FM9900') || ':' ||
TO_CHAR(TRUNC(MOD(a.TOTAL_TIME,3600)/60),'FM00') || ':' ||
TO_CHAR(MOD(a.TOTAL_TIME,60),'FM00') as TOTAL_TIME,
a.ASSIGN_DATE,a.TIME_START,a.TIME_STOP,
r.SUBMITTED_BY,r.REGISTER_DATE,r.DESCRIPTION
FROM table_a a
JOIN table_r ON a.REQ_ID = r.REQ_ID
JOIN table_e e ON e.emp_id = a.emp_id
LEFT JOIN my_table@link z ON e.emp_id = z.id
WHERE a.ASSIGN_DATE > '01-JAN-2013' and a.ASSIGN_DATE < '01-JAN-2015'
ORDER BY r.RFC_NUMBER;
table_a,table_r和table_e是oracle表。 table my_table是通过链接访问的mssql表。
所以我的问题是如何使用链接的mssql表加入oracle表?
答案 0 :(得分:1)
从您的评论中我认为问题是SQL Server默认情况下使用区分大小写的列名称(更具体的信息can be found at this link),而Oracle只会使用区分大小写的列名称(如果它们用双引号括起来) "
。因此,如果SQL Server表中的列id
为小写,则需要在Oracle中使用此列名称周围的引号。也就是说,如果您不在Oracle中的列名称周围添加引号,则它将采用大写。因此,z.id
将查找名为ID
的列,而z."id"
将查找名为id
的列。具体来说,这一行:
LEFT JOIN my_table@link z ON e.emp_id = z.id
应该是这样的:
LEFT JOIN my_table@link z ON e.emp_id = z."id"
希望这有帮助。