2013-07-08 65 views
1

我試圖從SQL Server 2008腳本通過鏈接服務器在Oracle 11g表中插入一行TIMESTAMP(6)列。SQL Server 2008中:通過鏈接服務器插入Oracle 11g表與TIMESTAMP(6)列

這是我試過到目前爲止:

INSERT INTO LinkedServer..Schema.Table(TimeStampColumn) 
VALUES(CONVERT(DATE, '2013-08-07')); 

INSERT INTO LinkedServer..Schema.Table(TimeStampColumn) 
VALUES(CONVERT(DATETIME, '2013-08-07 12:12:12.000001')); 

INSERT INTO LinkedServer..Schema.Table(TimeStampColumn) 
VALUES(CONVERT(TIMESTAMP, '2013-08-07 12:12:12.000001')); 

和多種組合,每次我得到這個錯誤時間:

The OLE DB provider "OraOLEDB.Oracle" for linked server "LinkedServer" supplied invalid metadata for column "TimeStampColumn". The data type is not supported.

這可能嗎?

如何將SQL Server的varchardatetime值轉換爲Oracle timestamp(6)數據類型?

非常感謝!

+0

你嘗試只是傳遞字符串'2013-12-25 12:12:12'例如(不轉換)? – sqladmin

+0

謝謝@sqladmin ..是的,同樣的錯誤信息。如果oracle列的數據類型是Date,那麼您的建議可以使用。 – vladiastudillo

回答

3

好,我發現它:

EXECUTE ('begin INSERT INTO TEST_TIMESTAMP(TimeStampColumn) 
     VALUES (TO_TIMESTAMP(?,''YYYY-MM-DD HH24:MI:SS.FF6'')); end;', 
     '2013-12-06 11:12:13.123456') 
    AT LINKEDSERVER; 

'timestampcolumn' 是類型TIMESTAMP列(6)

,你可以用它來調用Oracle的運行方式相同:Calling an Oracle function from SQL Server Linked Server

和它也適用於變量

declare @date datetime2 
set @date = SYSDATETIME() 
EXECUTE ('begin INSERT INTO TEST_TIMESTAMP(TimeStampColumn) 
     VALUES (?); end;', 
     @date) 
    AT LINKEDSERVER; 

但在這種情況下或acle截斷它到秒

+0

完美!感謝百萬@sqladmin。 – vladiastudillo

相關問題