使用 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"
希望对您有所帮助。
当我执行以下行时,我得到了结果:
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"
希望对您有所帮助。