Oracle 透過DB Link 連結SQL

  • 2111
  • 0

摘要:Oracle 透過DB Link 連結SQL

Oracle 透過DB Link連結SQL server,使用以下語法Query data。雖然下了Where條件,但是SQL 卻回傳整個table裡的資料,到了Oracle端才執行filter動作

select * from TestTable@TestDBLink
where "SelectTS" >= to_date('2012/01/01 00:00:00','YYYY/MM/DD HH24:MI:SS')and "SelectTS" <= to_date('2012/01/01 23:59:59','YYYY/MM/DD HH24:MI:SS') ;

從SQL Trace裡發現Oracle傳送過來的statement並不包含where 條件。原因是因為SQL 認不得 Oracle的to_date function

Oracle透過DB Link傳送到SQL 的statement必需轉為SQL能認得的T-SQL:

select * from TestTable@TestDBLin
where "SelectTS"  '20120101' and "SelectTS" < '20120102'

這樣filer的動作才會發生在SQL 端,然後回傳符合條件的資料至Oracle