SQL链接Oracle数据长度不定的问题

select * from test..TEST.TEST1

服务器: 消息 7356,级别 16,状态 1,行 1

OLE DB 提供程序 'OraOLEDB.Oracle' 为列提供的元数据不一致。执行时更改了元数据信息。

OLE DB 错误跟踪

[Non-interface error: 
Column 'DUMMY' (compile-time ordinal 1) of object '"TEST".
"TEST"' was reported to have a DBTYPE of 129 at
compile time and 130 at run time]。


这里我们发现当使用有精度的数据类型的时候,这个查询是不会报这种元数据类型不匹配的错误的。

这个是oracle的bug:3117040 在9.2.0.4.10中修正。

那么如果oracle的版本低于这个,避免在sqlserver的link seerver需要访问的column中使用没有精度(数据长度不定)的数据类型。

时间: 2024-10-28 22:52:50

SQL链接Oracle数据长度不定的问题的相关文章

ORACLE 常用的SQL语法和数据对象

oracle|sql语法|对象|数据 一.数据控制语句 (DML) 部分 1.INSERT  (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, --) VALUES ( 值1, 值2, --); INSERT INTO 表名(字段名1, 字段名2, --)  SELECT (字段名1, 字段名2, --) FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: 'GOOD DAY'如果字段值里包含单引号' 需要进行字符串转换, 我们把它替换成两个

ORACLE与SQL之间的数据迁移

oracle|数据 高级数据迁移        很多时间,要在异构数据库之间进行数据迁移或抽取,如果在SQL中提取ORACLE的数据,可以通过ODBC.OLEDB等多种方式,要从ORACLE提取SQL中的数据,大都是通过透明网关来实现的.        在异构数据抽取过程中,最好采用SQL92标准的语法编写SQL代码,同时要注意不同数据库之间数据类型的转换关系,如ORACLE的日期类型用DATE.SQL用Datetime等.   一 关于ORACLE的透明网关配置        ORACLE安装

字符集-用plsql链接oracle,SQL中不能带中文,是什么原因?

问题描述 用plsql链接oracle,SQL中不能带中文,是什么原因? 最近在oralce上遇到点麻烦,只要SQL里带中文,就不能正常显示英文和数字都可以.怀疑是字符集或者是区域的原因,请大神帮我看看. 新装的数据库,但是上面有一部分数据,我拿一个表来做示例: 看,这是一张表,注意里面的sname字段,有个"广东分公司" 我加个sname='广东分公司' 就找不到这条数据了 用like也不行 看了下服务端的数据库字符集,是AL32UTF8 请问怎么办呐?修改服务器的字符集?还是区域设

sql语句-通过程序读取oracle数据时,小数位数总是多一位

问题描述 通过程序读取oracle数据时,小数位数总是多一位 我在oracle中写了一个求数据集的sql语句,得到的数据都是保留三位小数,但是通过程序得到的DataTable,所有数据多了一位.这是为什么呀?如:本来在数据库里取出来是0.067,但是从程序里出来后就变成了0.0670,后面会多一位小数位,怎么去掉呢? 解决方案 看看数据库是不定长的数据类型,小数后保留的是4位. 解决方案二: 保留三位小数只是运算的精度.存储的精度关键看字段类型,字段类型是4位就算你保留零位小数结果还是4位. 你

SQL SERVER导入数据到ORACLE的方法总结

我们偶尔会有将数据从SQL SERVER导入到ORACLE当中的这种需求,那么这种跨数据库导数有那些方法呢?这些方法又有那些利弊呢? 下面比较肤浅的总结了一些可行的方法. 1:生成SQL脚本然后去ORACLE数据库执行. CREATE TABLE TEST (       ID   INT ,       NAME VARCHAR(12)   )   INSERT INTO dbo.TEST   SELECT 1001, 'Kerry' UNION ALL   SELECT 1002, 'Jim

用SQL Server2005同义词链接Oracle的完整过程

用SQL Server2005同义词链接Oracle数据库可以将Oracle中的表,视图等映射到SQL2005中,直接在SQL2005中操作Oracle的数据,非常简单方便. 下面具体一部一部讲解如何实现的. 环境:Windows2005+SQL2005,数据库名字为amd Oracle 9i,服务器IP:10.**.***.** 服务名 inter 第一步:在SQL2005服务器上安装Oracle9i客户端,要链接Oracle必须安装Oracle的客户端才可以使用.具体安装步骤不多说了. 第二

利用SQL *Plus复制遗留的Oracle数据表

你可能运行的是Oracle 10g Release 2数据库服务器,但是需要支持某些应用程序可能是很早之前写好的.在Oracle 8i之前的版本创建的数据表常用LONG数据类型来存储大型文本. 随着Large Object(LOB)数据类型的引入,LONG和LONG RAW数据类型就被抛弃了.如果你要复制使用了LONG数据类型的数据表,那么使用CREATE TABLE AS SELECT语法将不能完成任务,这时将会返回错误:ORA-00997: illegal use of LONG 数据类型.

SQL Server和Oracle数据锁定比较

数据库并行访问,也就是两个或两以上用户同时访问同一数据,这也是数据库引擎如何设计和实现适度反应所面临的最大问题.设计优良.性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务.而"底气不足"的数据库系统随着更多的用户同时访问系统将大大降低其性能.最糟糕的情况下甚至可能导致系统的崩溃. 当然,并行访问是任何数据库解决方案都最为重视的问题了,为了解决并行访问方面的问题各类数据库系统提出了各种各样的方案. SQL Server和Oracle两大DBMS也分别采用了不同的并行处理方法.它们之

oracle sql语句统计数据写法

问题描述 oracle sql语句统计数据写法 有3张表,A表活动B表活动地区C表地区商家 A表关联B表,B表关联C表都是一对多,现在需返回活动名称,活动地区数,地区商家数 解决方案 SELECT A.活动名称COUNT(1)SUM(SELECT COUNT(1) FROM C WHERE A=B AND B=C) FROM A INNER JOIN B ON A=B GROUP BY A.活动名称 解决方案二: SELECT T1.活动 AS 活动名称 COUNT(T2.地区) AS 活动地区