/*
在实际使用sql工作中总会碰到将某一列的值放到标题中显示.就是总说的行列转换或者互换.
比如有如下数据:
ID NAME KECHENG CHENGJI
-- ---------- -------------------- -------
1 a 语文 80
2 a 数学 70
3 b 语文 40
4 b &nb ......
因工作需要,数据库由PostgreSQL 转为Oracle 10g。由于之前的逻辑几乎都分布于存储过程,所以多代码的修改相对来说较小。
因对Oracle 数组参数的转换花了些时间,所以记录下来,分享一下。言归正传:
如果入参为字符串数组、整形数组或者GUID数组等等,并且把它作为一个查询条件,有两种方法可以做到。我采用了package,后面将介绍原因。
方法一:
在存储过程中使用for,相信大家对此应该不陌生。上例子:
create or replace package sbp_disablesyncpreset
as
type string_array is table of raw(16) index by binary_integer;
procedure disablesyncpreset(sync_computers in string_array, active_presets in string_array);
end sbp_disablesyncpreset;
Commit;
create or replace package body sbp_disablesyncpreset
as
procedure disablesyncpreset(sync_computers in string_array, active_presets in string_array)
as
begin
FOR i IN sync_computers.FIRST .. sync_computers.LAST
LOOP
UPDATE sparesync_last_sync SET preset_active='0'
WHERE
((destination_guid=sync_computers(i)) OR (src_guid=sync_compu ......
Oracle数据库中中文汉字显示乱码问题
摘 要
字符集的设置不当是影响ORACLE数据库汉字显示的关键问题。本文从实践经验出发,介绍了ORACLE关于字符集的分类、构成及设定方法,分析了ORACLE数据库汉字显示乱码的常见现象及原因,并针对各种现象及原因提出了行之有效的解决办法。
关键字: ORACLE 字符集 中文 乱码 解决 UTF-8
1 引言
ORACLE数据库作为业界领先的数据库产品,近年来在国内大中型企业中得到了广泛的应用。虽然ORACLE数据库产品本身在本地化方面已做得相当成熟,但还是有不少用户反应汉字显示乱码的问题。如对同一数据库不同的用户对同一表中的username查询却得出了不同的结果: “ORACLE??????”和“ORACLE中国有限公司”,显然结果中将中文字符显示为乱码,那么为什么呢?字符集的设置不当是影响ORACLE数据库汉字显示的关键问题。
2 关于字符集
字符集是ORACLE为适应不同语言文字显示而设定的。用于汉字显示的字符集主要有ZHS16CGB231280、ZHS16GBK、US7ASCII和UTF-8等。字符集同时存在于服务器端和客户端。服务器端字符集是在安装ORACLE时指定的,字符集登记信息存储在ORACLE数据库字典的V$NL ......
1.启动停止TNS监听
lsnrctl start
lsnrctl stop
2.启动Oracle Services
net start OracleServiceOrcl
net stop OracleServiceOrcl
SQL> show all --查看所有68个系统变量值
SQL> show user --显示当前连接用户
SQL> show error --显示错误
SQL> set heading off --禁止输出列标题,默认值为ON
SQL> set feedback off --禁止显示最后一行的计数反馈信息,默认值为"对6个或更多的记录,回送ON"
SQL> set timing on --默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能
SQL> set sqlprompt "SQL> " --设置默认提示符,默认值就是"SQL> "
SQL> set linesize 1000 --设置屏幕显示行宽,默认100
SQL> set autocommit ON --设置是否自动提交,默认为OFF
SQL> set pause on --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页
SQL> set arraysize 1 --默认为15
SQL> set long 1000 --默认为80
列出当前用户下所有同义词的定义,可用来测试同义词的真实存在性
select 'desc '||tname from tab where tabtype='SYNONYM';
查询当前用户下所有表的记录数
sel ......
--
查看VGA信息:
show sga;
select
*
from
v$sgastat;
--
可以通过以下几个动态性能视图查看信息:
V$sysstat 系统统计信息
V$sesstat 用户会话统计信息
V$pgastat 显示内存使用统计信息
V$sql_workarea SQL游标所用工作区的信息
V$ sql_workarea_active 当前系统工作区的信息
data_file:dba_data_files;
control_file:从init.ora里面可以看到,D:ora92adminora92pfileinit.ora.
redo_log:v$logfile;
实际上D:ora92oradataora92里面放着很多东西。
select
*
from
v$
database
;里面可以查询archivelog的信息。
段:dba_segments
区:dba_extents
......
查看相关job信息
1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行job相关信息
查看存储过程 package等相关过程
select * from user_source where text like '%要查的内容%' ......