繁体   English   中英

SQL Server 2008:使用TIMESTAMP(6)列通过链接服务器INSERT INTO到Oracle 11g表

[英]SQL Server 2008: INSERT INTO through Linked Server to Oracle 11g table with TIMESTAMP(6) column

我正在尝试通过链接服务器在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'));

和许多组合,每次我收到此错误:

链接服务器“LinkedServer”的OLE DB提供程序“OraOLEDB.Oracle”为列“TimeStampColumn”提供了无效的元数据。 不支持数据类型。

这可能吗?

如何将SQL Server的varchardatetime值转换为Oracle timestamp(6)数据类型?

非常感谢!

好吧,我找到了:

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函数的方法相同: 从SQL Server链接服务器调用Oracle函数

它也适用于变量

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

但在这种情况下,Oracle会将其截断为秒

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM