随笔分类 -  oracle

1 2 下一页
Oracle中Varchar2/Blob/Clob用法详解
摘要:数据库中提供了三种字段类型Varchar2、Blob和Clob用于存储字符串或二进制数据,其中Varchar2、Clob用于存储字符串数据,而Blob用于存储二进制数据。 Varchar2采用单字节存储,有两个最大长度:一个是在字段类型4000;一个是在PL/SQL中变量类型32767。今天犯了一个小错误,就是函数的varchar2类型的返回值长度也是4000,而不是我以为的32767。Blob 采用单字节存储,适合保存二进制数据,如图片文件。Clob 采用多字节存储,适合保存大型文本数据。 Oracle中处理BLOB/CLOB字段的方式比较特别,所以需要特别注意下面两点:1. 在Oracl. 阅读全文
posted @ 2011-08-30 19:21 Ruthless 阅读(18617) 评论(0) 推荐(3) 编辑
Oracle序列号详解
摘要:例1:创建序列:CREATE SEQUENCE ABC INCREMENT BY 1 START WITH 1 MAXVALUE 9999999999 NOCYCLE NOCACHE;语法详解CREATE SEQUENCE 序列名 [INCREMENT BY n] --1、[START WITH n] --2、[{MAXVALUE/MINVALUE n|NOMAXVALUE}] --3、[{CYCLE|NOCYCLE}] --4、[{CACHE n|NOCACHE}]; --5、其中:1、INCREMENT BY 用于定义序列的步长(增长量),如果省略,则默认为1,如果出现负值,则代表序列的值 阅读全文
posted @ 2011-08-30 11:03 Ruthless 阅读(12697) 评论(0) 推荐(3) 编辑
oracle常用函数归纳
摘要:SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数(注:是字符而非字符串);SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;A A ZERO SPACE--------- ------65 97 48 32 2.CHR给出整数,返回对应的字符;SQL> select chr(54740), chr(65) from dual;ZH C-- -赵 A 3.CONCAT连接两个字符串;SQL> 阅读全文
posted @ 2011-08-17 21:35 Ruthless 阅读(2894) 评论(0) 推荐(1) 编辑
oracle decode用法
摘要:select decode( x , 1 , ‘x is 1’, 2 , ‘x is 2’, ‘others’) from dual 当x等于1时,则返回‘x is 1’。 当x等于2时,则返回‘x is 2’。 否则,返回‘others’。 阅读全文
posted @ 2011-07-23 14:44 Ruthless 阅读(1114) 评论(0) 推荐(1) 编辑
oracle 分页
摘要:-- Oracle 分页 -- 20 = (currentPage-1) * pageSize + pageSize 每页显示几条-- 10 = (currentPage-1) * pageSize 当前页数SELECT*FROM (SELECT o.*, ROWNUM rn FROM tb_phone o WHERE ROWNUM 10 --mysql分页 select * from tableName where 条件 limit起始位置(0开始算), 每页显示条数; eg、SELECT * FROM tb_phone limit 2, 4--起始位置写的是2... 阅读全文
posted @ 2011-07-20 00:02 Ruthless 阅读(1267) 评论(0) 推荐(2) 编辑
oracle数据重复,只取一条
摘要:--方法一select * from tb_supply where rowid=any(select max(rowid) from tb_supply group by phone_id)--方法二select * from tb_supply where rowid in (select max(rowid) from tb_supply group by phone_id) 阅读全文
posted @ 2011-07-19 16:06 Ruthless 阅读(30634) 评论(0) 推荐(1) 编辑
Oracle创建用户
摘要:--创建用户并赋予相应权限create user test identified by "test";grant dba to test;grant unlimited tablespace to test;grant create any table to test; --创建表空间create tablespace SM10001 logging datafile 'd:\oracle\test_data01.dbf' size 32m autoextend(自动扩展) on next 32m maxsize 2048m extent(宽度) manag 阅读全文
posted @ 2011-05-05 09:53 Ruthless 阅读(1046) 评论(1) 推荐(1) 编辑
oracle数据库函数和存储过程的包
摘要:1、创建包(package)函数:create or replace package 包名 as 函数注意:as后可加多个函数 存储过程:Create or replace package 包名 as 存储过程注意:as后可加多个存储过程2、包的调用函数的包调用:call 包名.函数名; 存储过程的包调用:call 包名.存储过程名; 阅读全文
posted @ 2011-04-18 16:56 Ruthless 阅读(1431) 评论(0) 推荐(0) 编辑
oracle存储过程的事务处理
摘要:1、事务用于确保数据的一致性,由一组相关的DML语句组成,该组DML语句所执行的操作要么全部确认,要么全部取消。2、当执行事务操作(DML)时,Oracle会在被作用的表上加锁,以防止其他用户改变表结构,同时也会在被作用的行上加行锁,以防止其他事务在相应行上执行DML操作。3、当执行事务提交或事务回滚时,Oracle会确认事务变化或回滚事务、结束事务、删除保存点、释放锁。4、提交事务(COMMIT)确认事务变化,结束当前事务、删除保存点,释放锁,使得当前事务中所有未决的数据永久改变。5、保存点(SAVEPOINT)在当前事务中,标记事务的保存点。6、回滚事务(ROLLBACK)回滚整个事务,删 阅读全文
posted @ 2011-04-18 16:31 Ruthless 阅读(32200) 评论(2) 推荐(1) 编辑
Oracle存储过程的异常处理
摘要:1、为了提高存储过程的健壮性,避免运行错误,当建立存储过程时应包含异常处理部分。2、异常(EXCEPTION)是一种PL/SQL标识符,包括预定义异常、非预定义异常和自定义异常;3、预定义异常是指由PL/SQL提供的系统异常;非预定义异常用于处理与预定义异常无关的Oracle错误(如完整性约束等);自定义异常用于处理与Oracle错误的其他异常情况。4、RAISE_APPLICATION_ERROR用于自定义错误消息,并且消息号必须在-20000~-20999之间 命名的系统异常 产生原因 access_into_null 未定义对象 case_not_found case中若未包含相应的wh 阅读全文
posted @ 2011-04-18 15:19 Ruthless 阅读(50773) 评论(0) 推荐(6) 编辑
JAVA通过调用数据库函数调用存储过程
摘要:下面将举一个通过数据库函数来调用存储过程:创建数据库函数存储过程CREATE OR REPLACE FUNCTION stu_proc ( v_id IN NUMBER) RETURN VARCHAR2 IS v_name VARCHAR2(20);BEGIN SELECT o.sname INTO v_name FROM student o WHERE o.id=v_id; RETURN v_name;EXCEPTION WHEN OTHERS THEN RETURN '数据未找到';END; JAVA通过调用数据库函数调用存储过程package com.ljq.test;i 阅读全文
posted @ 2011-04-17 21:53 Ruthless 阅读(4501) 评论(1) 推荐(1) 编辑
JAVA调用增删改的存储过程
摘要:1、创建添加存储过程CREATE OR REPLACE PROCEDURE stu_proc(v_id IN NUMBER, v_name IN VARCHAR2, v_age IN NUMBER) ASBEGIN INSERT INTO student(id, sname, age) values (v_id, v_name, v_age); commit;END; JAVA调用添加存储过程package com.ljq.test;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.SQLE 阅读全文
posted @ 2011-04-17 20:06 Ruthless 阅读(3558) 评论(0) 推荐(1) 编辑
JAVA调用数据库存储过程
摘要:下面将举出JAVA对ORACLE数据库存储过程的调用 ConnUtils连接工具类:用来获取连接、释放资源package com.ljq.test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * 连接工具类 * * ConnUtils类声明为final类说明此类不可以被继承 * * @author jiqinlin * */public final clas 阅读全文
posted @ 2011-04-17 17:47 Ruthless 阅读(26816) 评论(0) 推荐(2) 编辑
oracle函数调用存储过程
摘要:1、无参数存储过程的调用--创建无参存储过程CREATE OR REPLACE FUNCTION stu_proc RETURN VARCHAR2 IS --声明语句段 v_name varchar2(20);BEGIN --执行语句段 SELECT o.sname INTO v_name FROM student o where o.id=1; RETURN v_name;END;--调用无参存储过程DECLARE BEGIN DBMS_OUTPUT.put_line('在PL/SQL中打印的结果:'||stu_proc);END; 2、入参存储过程的调用--创建入参存储过程 阅读全文
posted @ 2011-04-17 13:56 Ruthless 阅读(20345) 评论(0) 推荐(1) 编辑
带有无参数的存储过程
摘要:SQL中调用存储过程语句:callprocedure_name();注:调用时”()”是不可少的,无论是有参数还是无参数. 定义对数据库存储过程的调用时1、无参数存储过程:{callprocedure_name}2、仅有输入参数的存储过程:{callprocedure_name(?,?...)}。这里?表示输入参数,创建存储过程时用in表示输入参数3、仅有输出参数的存储过程:{callprocedure_name(?,?...)}。这里的?表示输出参数,创建存储过程时用out表示输出参数4、既有输入参数又有输出参数的存储过程{callprocedure_name(?,?...)}。这里的?有表 阅读全文
posted @ 2011-04-16 21:04 Ruthless 阅读(12894) 评论(0) 推荐(1) 编辑
oracle存储过程的基本语法
摘要:1、存储过程的语法结构:CREATE OR REPLACE PROCEDURE 过程名 AS 声明语句段;BEGIN 执行语句段;EXCEPTION 异常处理语句段;END; 2、SELECT INTO STATEMENT将SELECT查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)例如:BEGIN SELECT col1,col2 INTO 变量1,变量2 FROM typestruct where xxx;EXCEPTION WHEN NO_DATA_FOUND THEN xxxx;END; 3、IF 判断I 阅读全文
posted @ 2011-04-16 19:18 Ruthless 阅读(1294) 评论(0) 推荐(0) 编辑
oracle索引浅谈
摘要:适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引 oracle索引分为3种: normal: 可重复数据,普通索引unique: 数据不能重复,唯一索引bitmap: 位图索引创建索引的标准语法: CREATE INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名; 例如:CREATE INDEX idx_of_imsi ON uim_auth_file(imsi) TABLESPACE users; 创建唯一索引: CREATE unique INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名; 例如:CREATE UNIQU 阅读全文
posted @ 2011-04-13 16:53 Ruthless 阅读(1894) 评论(1) 推荐(1) 编辑
ORACLE多表查询优化
摘要:ORACLE有个高速缓冲的概念,这个高速缓冲就是存放执行过的SQL语句,那oracle在执行sql语句的时候要做很多工作,例如解析sql语句,估算索引利用率,绑定变量,读取数据块等等这些操作。假设高速缓冲里已经存储了执行过的sql语句,那就直接匹配执行了,少了步骤,自然就快了,但是经过测试会发现高速缓冲只对简单的表起作用,多表的情况完全没有效果,例如在查询单表的时候那叫一个快,但是假设连接多个表,就龟速了。最重要一点,ORACLE的高速缓冲是全字符匹配的,什么意思呢,看下面三个select--No.1select * from tableA;--No.2select * From tableA 阅读全文
posted @ 2011-04-13 14:20 Ruthless 阅读(26671) 评论(6) 推荐(8) 编辑
oracle 查找或删除重复记录的语句
摘要:--oracle查找重复记录select * from tableA a where a.rowid>=(select min(rowid) from tableB b where a.column=b.column) --oracle删除重复记录delete from tableA a where a.rowid>=(select min(rowid) from tableB b where a.column=b.column) 阅读全文
posted @ 2011-04-13 11:24 Ruthless 阅读(999) 评论(1) 推荐(1) 编辑
oracle多表联合查询,统计查询,组函数,order by,having,子查询,集合运算
摘要:一、多表联合查询 通过连接可以建立多表查询,多表查询的数据可以来自多个表,但是表之间必须有适当的连接条件。为了从多张表中查询,必须识别连接多张表的公共列。一般是在WHERE子句中用比较运算符指明连接的条件。 两个表连接有四种连接方式: * 相等连接 * 不等连接(看作单表查询) * 外连接* 自连接(自关联) 1.相等连接 通过两个表具有相同意义的列,可以建立相等连接条件。使用相等连接进行两个表的查询时,只有连接列上在两个表中都出现且值相等的行才会出现在查询结果中 显示雇员名称和所在部门的编号和名称。 执行以下查询: SELECT a.ename, b.id, b.dname FROM emp 阅读全文
posted @ 2011-04-13 10:45 Ruthless 阅读(17640) 评论(0) 推荐(1) 编辑

1 2 下一页