ORACLE 在 SQLPLUS 与 PL/SQL 中显示乱码的问题

Linux下SQLPlus中文乱码处理的方法

1.首先查询数据库字符集

SQL> select userenv(‘language‘) from dual;

USERENV(‘LANGUAGE‘)
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

SQL> exit
从上面得知数据库字符集为 AMERICAN_AMERICA.AL32UTF8

2.配置环境变量

echo ‘export NLS_LANG="AMERICAN_AMERICA.UTF8"‘>>/etc/profile
source /etc/profile
或者
echo ‘export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"‘>>/etc/profile
source /etc/profile

3.再次查询即可正常识别中文

原因分析:

sqlplus乱码与操作系统NLS_LANG变量有关,当数据库字符集与NLS_LANG变量不一致就产生乱码。

PL/SQL  中设置中文格式,避免乱码

最近新买的电脑,配置好数据库连接后,plsql查看数据与插入中文数据都显示问号(???),同事的都正常显示,查看了很多资料,有的说是数据库字符集的原因让修改数据库的字符集,但是我的数据库都是远程连接正式环境的数据库,修改正式库的字符集是不可能了,毕竟别人的都好使。后来终于得以解决,下面我来详细介绍如何解决的(简单好用):

原因:本机没有配置数据库字符集环境变量,或是与数据库字符集不一致。

步骤一:执行在plsql中执行 select userenv(‘language‘) from dual; 语句来查看本机的字符集,或是执行 select * from V$NLS_PARAMETERS; 语句。两者的区别是第一种查看到的是拼接好的一条字符集数据,第二种是数据库详细配置参数有多条数据需要将 第一行,第二行,第九行的value数据以 第一行_第二行.第九行的格式拼接起来,我的拼接好好后是AMERICAN_AMERICA.ZHS16GBK

步骤二:在环境变量中添加两条配置信息,鼠标右键我的电脑(计算机/此电脑)等图标,选择属性,选择高级系统设置,选择高级选项卡的环境变量,在系统变量里新建两条配置:

1、LANG=zh_CN.GBK(GBK是这样形式的,不同编码这里的value值需要跟着改变)

2、NLS_LANG=AMERICAN_AMERICA.ZHS16GBK(这个value值就是我们步骤一中拼接好的那个值)

步骤三:这步也是至关重要的,到这里我们就配置好了,很多的博客与帖子都说重启plsql即可,但是我的并没有生效,需要重启电脑 生效,很重要。(设置到Administrator的用户变量,然后重启plsql客户端就可以了,不用重启操作系统,这个我试过了可以的。)
---------------------
作者:zhang_yanchao
来源:CSDN
原文:https://blog.csdn.net/zhang_yanchao/article/details/79092711
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/chendian0/p/11233608.html

时间: 2024-08-05 05:51:25

ORACLE 在 SQLPLUS 与 PL/SQL 中显示乱码的问题的相关文章

ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍

如果我是C罗 原文 ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍 sequence在ORACLE中应用十分广泛,就是序列号的意思,会自动增加指定变数,如逐次增加1或者2或者其他. 1.创建序列 Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE 权限 CREATE SEQUENCE CUX_DEMO_SEQUENCEMINVALUE 1MAXVALUE 99999999999START WITH 1000

在PL/SQL中调用存储过程--oracle

在oracle10中写好了存储过程,代码如下: CREATE OR REPLACE Procedure Proc_Insert ( sName in varchar2, sAge in int, sExeTime in varchar2 ) is begin Insert into T_TEST(C_ID, C_NAME, C_AGE, C_INTIME, C_EXETIME) values(T_TEST_CID.nextval,sName,sAge, sysdate, to_date(sExe

ORACLE PL/SQL 实例精解之第三章 PL/SQL中的SQL

3.1 在PL/SQL中使用DML 在PL/SQL语块中,两种变量赋值a. := 初始化.b. select into语法,PL/SQL语块的声明部分被声明的变量,后期可以使用选择语句进行赋值. 3.1.1变量初始化时使用select into语法 select A INTO V_A INSERT INTO xxx(表)( XA)values (V_A) 3.1.2 在pl/sql语句块中使用DML a.使用oracle序列 CURR b.获取和递增序列值 CURRVAL 返回序列的当前值 NE

[Oracle系列整理01]PL/SQL 基本查询与排序

本课重点:    1.写SELECT语句进行数据库查询    2.进行数学运算    3.处理空值    4.使用别名ALIASES    5.连接列    6.在SQL PLUS中编辑缓冲,修改SQL SCRIPTS    7.ORDER BY进行排序输出.    8.使用WHERE 字段. 一.写SQL 命令:      不区分大小写.      SQL 语句用数字分行,在SQL PLUS中被称为缓冲区.      最后以:或 / 结束语句.      也可以用RUN来执行语句 二.例1:

在PL/SQL中使用日期类型

之前的文章介绍了在PL/SQL中使用字符串和数字了下.毫无疑问,字符串和数字很重要,但是可以确定的是没有哪个应用不依赖于日期的. 你需要记录事件的发生事件,人们的出生日期等等很多. 通常的使用方式是: 1)声明日期变量和常量 2)使用内建函数显示和修改日期值 3)执行日期相关计算 日期类型比字符串或数字更复杂.它有多个部分组成(年,月,日,时,分,秒等),而且关于一个有效的日期有很多规则. 本文将给你所有信息以便在PL/SQL程序中使用日期. 1.PL/SQL中的日期,时间戳和间隔(Interv

PL/SQL中如何让程序每隔几秒插入一条数据

在编写ORACLE PL/SQL中,如果需要程序执行中暂停几秒钟再继续执行,可以通过oracle内置的dbms_lock.sleep来实现,不过dbms_lock包需要用户自己安装. [[email protected] ~]# su - oracle [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon May 25 16:36:12 2015 Copyright (c

Oracle数据库之开发PL/SQL子程序和包

Oracle数据库之开发PL/SQL子程序和包 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据库中,以便共享. 过程和函数均存储在数据库中,并通过参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据. 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中.经过第一次编译后

Oracle学习(十一):PL/SQL

1.知识点:可以对照下面的录屏进行阅读 PL/SQL程序结构 declare 说明部分 (变量说明,光标申明,例外说明 ] begin 语句序列 (DML语句]- exception 例外处理语句 End; / ------------------------------------------------------------------ --第一个PL/SQL程序:HelloWorld set serveroutput on --如果要在屏幕上输出信息,需要将serveroutput开关打

PL/Sql 中创建、调试、调用存储过程

存储过程  所用函数说明  功能:求和与差  原形:GetSumAndSub(p1 in number , p2 in number ,m out number , b out number)   参数:m=p1+p2 b=p1-p2  1.先建存储过程 左边的浏览窗口选择 procedures ,会列出所有的存储过程,右击文件夹procedures单击菜单"new",弹出  template wizard窗口, name框中输入 GetSumAndSub ,parameters中填入