oracle dblink sqlserver查询字符串的问题 建立了oracle dblink sqlserver 在oracle中查询数字字段没问题,为什么查不出来字符字段?是不是字符集的问题?oracel:817MMSQL:2000 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看一下:http://topic.csdn.net/u/20080923/14/6d85cc70-05d8-44f7-9fc1-472475985bf5.html [Q]怎么样查看数据库字符集 [A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。 客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter, 表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表 会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。 客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件 字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。 [Q]怎么样修改字符集 [A]8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。 Startup nomount; Alter database mount exclusive; Alter system enable restricted session; Alter system set job_queue_process=0; Alter database open; Alter database character set zhs16gbk; 查询语句:select * from kqjl_v@kq;结果: R_id Person_id----------- ----------- 1200 159 1201 292 1202 252 1203 364 1204 364 1205 505 1206 396 1207 549其实还有三个字符串字段不显示。SQL> select "PCode" from kqjl_v@kq;select "PCode" from kqjl_v@kqORA-00904: 无效列名 去掉双引号。select PCode from kqjl_v@kq; select PCode from kqjl_v@kq; oracle中是这么使用的 SQL> select PCode from kqjl_v@kq;select PCode from kqjl_v@kqORA-00904: 无效列名去掉引号也是一样的,用select * from kqjl_v@kq; 查询根本没看到字符字段 kqjl_v表中只有R_id和Person_id字段,根本就没有 PCode字段啊?! kqjl_v表中有五个字段PCode,P_Name 字符RsTime 日期Person_id,R_id 数字 --能否在sqlserver中用查询分析器查一下:select * from kqjl_v; 使Oracle客户端与服务器端的字符集相同,参考:http://topic.csdn.net/t/20030710/20/2014176.html 设想一下:能否存在Oracle与sqlserver字符集不一致的问题? 还是 安装TRANSPARENT GATEWAY选件(FOR MSSQL)时有问题? 我没有单独安装TRANSPARENT GATEWAY选件(FOR MSSQL) 读取char类型有错啊 - - 请问这个插入语句的“标识符”无效哪里有问题。。。 交易的连续性判断问题 oracle10g查询表问题 oracle如何一次读取多条语句?? 请推荐几本oracle的教程 一个排序问题,请教 sql/plus语句问题求教 LINUX下安装ORACLE客户端,可用tnsping通ORACLE数据库服务,但用SQLPLUS不能连上. 关于导出数据库文件出现乱嘛的问题 请问这个sql语句对吗? oracle sqlca.code的错误代代码是-1008,表示什么意思? 关于oracle存储过程中创建动态表的问题!!!
[A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。
客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,
表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
[Q]怎么样修改字符集
[A]8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。
Startup nomount;
Alter database mount exclusive;
Alter system enable restricted session;
Alter system set job_queue_process=0;
Alter database open;
Alter database character set zhs16gbk;
select * from kqjl_v@kq;
结果:
R_id Person_id
----------- -----------
1200 159
1201 292
1202 252
1203 364
1204 364
1205 505
1206 396
1207 549
其实还有三个字符串字段不显示。SQL> select "PCode" from kqjl_v@kq;select "PCode" from kqjl_v@kqORA-00904: 无效列名
去掉引号也是一样的,用select * from kqjl_v@kq; 查询根本没看到字符字段
RsTime 日期
Person_id,R_id 数字