摘要: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