March
15th,
2014
在SQL Server 中建立好與 Oracle 的 DBLink 連接後,可透過下列方式查詢 Oracle DB Server 的資料
SELECT * FROM OpenQuery([linkedServerName], 'SELECT * FROM dual')
--ex: SELECT * FROM OpenQuery(PROD, 'SELECT * FROM dual')
但如果你要傳的 SQL 帶有字串時,如下語法:
SELECT * FROM dual WHERE EmplID='12258'
則需要透過轉義字符 '
來控制,SQL 修改成如下的方式傳值:
SELECT * FROM OpenQuery(PROD, 'SELECT * FROM dual WHERE EmplID=''12258''')
如果今天想在你要在傳的 SQL 中使用變數了話,就會變得複雜了,請參考下列 SQL 來處理:
DECLARE @SQL NVARCHAR(1000)
DECLARE @EmplID NVARCHAR(10)
SET @EmplID = '12258'
SET @SQL = 'SELECT * FROM dual WHERE EmplID = ' + @EmplID
SET @SQL = 'SELECT * FROM OpenQuery(PROD, ''' + REPLACE(@SQL, '''', '''''') + ''')'
EXEC(@SQL)
透過 REPLACE 函數,將 SQL 字串中的轉義字符調整成所需的樣式