使用 mssql 加入 oracle table

Joining oracle with mssql table

当我执行以下行时,我得到了结果:

select * from my_table@link; 

但是当我尝试将 linked table 与其他 table 加入 select 时,我收到错误提示 "z.id - invalid identifier"

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。 table my_table 是通过 link.

访问的 mssql table

所以我的问题是如何将 oracle tables 加入 linked mssql table?

根据您的评论,我认为问题在于 SQL 服务器默认使用区分大小写的列名(更具体的信息 can be found at this link),而 Oracle 仅在以下情况下使用区分大小写的列名这些用双引号 " 括起来。因此,如果您的 SQL 服务器 table 中的列 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"

希望对您有所帮助。