oracle常用注意问题

1:oracle时间格式注意问题
用于分钟的oracle格式值为MI,而不是大多数其他数据库中的MM,
比如HH:MI:SS,而不是HH:MM:SS,MM在oracle中代表月。
2:Oracle数据类型Long需要注意的问题:
1.long是一个旧oracle数据类型,用于存储最多包含2GB数据的可变长度字符串,类似varchar2
2.不能在select语句的where子句中使用long
3.表不能有多个long列
4.不能被索引
5.强烈建议停止使用long引用clob
3:java.lang.ClassCastException: weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB
开发时,向oracle写入blob数据时,如下:
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);
BufferedOutputStream bos = new BufferedOutputStream(blob.getBinaryOutputStream());
bos.write(define.getBytes("UTF-8"));
但是发布到weblogic上,使用weblogic的连接池,就抛错了,如下:
java.lang.ClassCastException: weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB
后来查了一下,原因是通过weblogic连接池取出的连接取出的blob对象是weblogic封装过的OracleThinBlob,而不是oracle.sql.BLOB。然后又看了一下OracleThinBlob的方法与oracle.sql.BLOB类似,所以采用了下面的写法,避免异常:
Object obj = rs.getBlob(1);
Class clazz = obj.getClass();
Method method = clazz.getMethod("getBinaryOutputStream", new Class[]{});
OutputStream os = (OutputStream)method.invoke(obj, new Object[]{});
BufferedOutputStream bos = new BufferedOutputStream(os);
bos.write(define.getBytes("UTF-8"));
这样写既避免了异常,也抛开了对oracle驱动jar的依赖。
如果发布环境比较复杂,也可以增加一些判断来分别处理。

4:基本
create sequence s_id
minvalue 1
maxvalue 999999999
start with 1
increment by 1;



-- Create sequence
create sequence SEQ_ID
minvalue 1
maxvalue 99999999
start with 1
increment by 1
cache 30
cycle;

5:插入语句
insert into tab (auto_id) values (SEQ_ID.Nextval);
6:插入报错
missing comma 原因在于缺少逗号

7:表空间操作
1. 查询数据库现在的表空间
select tablespace_name, file_name, sum(bytes)/1024/1024 table_size from dba_data_files group by tablespace_name,file_name;
2. 建立表空间
CREATE TABLESPACE data01 DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M;
3.删除表空间
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;
4. 修改表空间大小
alter database datafile '/path/NADDate05.dbf' resize 100M
5.增加数据文件
ALTER TABLESPACE NEWCCS ADD DATAFILE '/u03/oradata/newccs/newccs04.dbf' SIZE 4896M;
6. 删除数据文件
sql>alter database datafile '/path/NADDate05.dbf' OFFLINE DROP;


8:oracle分页
oracle分页:
    select * from ( select mytable.*,rownum num from (实际传的SQL) where rownum<=pageEnd) where num>=pageStart
sqlServer分页:
select * from ( select top 页面容量 from( select top 页面容量*当前页码 * from 表 where 条件 order by 字段A) as temptable1 order by
字段A desc) as temptable2 order by 字段A  
Mysql分页:
select * from mytable where 条件 limit 当前页码*页面容量-1 to 页面容量

9:一个表中多字段求和
select
(select ZH_LABEL from RMS_CITY where r.CITY_ID = INT_ID) as city,
count(*) as allne,
count(decode(r.EQUITY, '', 1)) as acitynum
from rms_transne_local r
where r.stateflag = 0
group by r.city_id
order by r.city_id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值