
ORACLE
sfdev
这个作者很懒,什么都没留下…
展开
-
Oracle中根据Date型转换成Java对应的long型毫秒数
在Java开发中,很多时候我们为了方便会直接使用long型来保存时间,可以通过System.currentTimeMillis()或者是java.util.Date.getTime()来获取;取值为当前日期时间与1970-01-01相差的毫秒数;但是在Oracle里面,默认没有直接提供获取当前时间的毫秒数的相关function,所以要想在SQL里面获得毫秒数,只能自己手动计算下喽,如下:原创 2009-01-06 13:48:00 · 15767 阅读 · 5 评论 -
只满足某个条件的数据统计SQL各类写法性能分析
最近遇到一个需求,简要描述为:统计出只订购了A软件的用户数;需求看似简单,写出这条SQL这并不难,但是SQL性能呢?下面就介绍实现该需求的几种SQL写法:首先假设我们的订购记录表为APP_SUBSC_CTRL,核心字段有:SQL> desc app_subsc_ctrl;Name Type Nullable Default Comm原创 2009-01-04 13:34:00 · 7132 阅读 · 1 评论 -
Oracle多行转换成字符串方法总结
当我们在做一些比较复杂的数据导出时,可能会经常遇到要将不固定的多行数据组合成一个字符串返回;ISVP中就遇到了类似的情况,要求对于每一个APP,返回他所属的所有类目名称,类目名称之间用,隔开;对于该类型的问题,总结一下大致有如下几种常见方案;在具体陈述实现方案之前,我们先介绍下我们即将操作的表结构: SQL> desc app_category_link;Name原创 2008-11-10 14:39:00 · 3926 阅读 · 2 评论 -
Oracle常见SQL分页实现方案介绍
在Oracle中,用SQL来实现分页有很多种实现方式,但有些语句可能并不是很通用,只能用在一些特殊场景之中;以下介绍三种比较通用的实现方案;在以下各种实现中,ROWNUM是一个最核心的关键词,在查询时他是一个虚拟的列,取值为1到记录总数的序号;首先来介绍我们工作中最常使用的一种实现方式:SELECT * FROM (SELECT ROW_.*, ROWNUM ROWNUM_原创 2008-08-20 14:44:00 · 22390 阅读 · 5 评论 -
Oracle执行SQL时遭遇特殊字符&
今天在进行数据订正的时候写了一批很简单的update语句,结果在sqlplus中执行出现问题,提示让我输入对应参数的值?原SQL如:update trans_record set params = service=standard_bail&xxx=112 where trans_record_id = 3041;经查,问题就出在字符&上,他是一个控制参数传入的字符;要解决执行原创 2008-07-29 11:08:00 · 3969 阅读 · 0 评论 -
DB事务隔离级别回顾
DB之所以设定事务隔离级别,其重要原因就是要避免一些常见的脏数据的读写等问题,根据不同的事务隔离级别,我们能够在数据读写并发效率和数据一致性方面取得不一样的效果;在具体进入事务隔离级别之前,我们首先来看一下到底哪些情况是我们在DB操作中不希望看到的: Dirty Read 脏数据读取原创 2008-06-13 15:15:00 · 2365 阅读 · 0 评论 -
用START WITH...CONNECT BY PRIOR子句实现递归查询
oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with cond1 connect by cond2 where cond3; 简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段: id,par转载 2008-06-03 19:42:00 · 3161 阅读 · 0 评论 -
ORACLE进阶之三:分析函数
有时候我们需要从DB中提取一些很复杂的数据,而标准SQL却对此无能为力,或者是执行效率非常的低;比如我们需要提取如下数据: 逐行显示各个部门的累计工资,每行包括部门内前面所有人的工资总和; 查找各个部门工资最高的前N个人; ……语法 Function名称([参数]) OVER ([partition 子句][ order 子句] [window 子句]) OVER为分析函数原创 2008-02-23 15:38:00 · 3953 阅读 · 1 评论 -
sqlplus使用技巧
生产环境的db没法直接用开发工具(比如TOAD、PL/SQL Developer )来连接并进行数据操作,因为有很严格的权限控制(为了db安全考虑),我们开发人员能用的唯一工具就是通过sshterm登录到db server上面,然后用指定的受限用户名通过sqlplus登录,然后进行操作;习惯了使用开发工具的便利,初次回到sqlplus的话会非常不习惯,但只要我们设置一些简单的参数,就可以大大提高s原创 2008-01-25 14:32:00 · 3727 阅读 · 0 评论 -
ORACLE进阶之二:LOCK
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。原创 2008-01-13 19:14:00 · 2826 阅读 · 0 评论 -
ORACLE存储过程实战之三:进阶
1.SELECT INTO语句要求SELECT出来的RESULT至少有一条记录; 若RS为NULL,则会抛出NO_DATA_FOUND的EXCEPTION;所以需要进行异常捕获;2.进行UPDATE、DELETE操作时可以用ROWID替换PK可以提高执行效率; 因为ROWID是直接定位到物理磁盘地址,而无需先从PK Index中查询,从而有效降低IO次数; 比如UPDATE MD_USER S原创 2008-01-12 22:27:00 · 2818 阅读 · 0 评论 -
ORACLE存储过程实战之二:游标
6.CURSOR 申明 无参数申明:CURSOR CUR_NAME IS SELECT COL1,COL2,... FROM ... WHERE ...; 带参数申明:CURSOR CUR_NAME(PARAM1 DATA_TYPE,PARAM2 DATA_TYPE,...) IS SELECT COL1,COL2,... FROM ... WHERE ...;7.用FOR IN使用CURSO原创 2008-01-12 15:53:00 · 1726 阅读 · 0 评论 -
ORACLE存储过程实战之一:入门
1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER, 参数3 OUT NUMBER) IS变量1 INTEGER := 默认值;变量2 DATE;BEGIN ...EXCEPTION WHEN 异常类别 THEN ... WHEN OTHERS THEN ...END原创 2008-01-12 15:06:00 · 3127 阅读 · 0 评论 -
ORACLE进阶之一:HINT
最近由于需要经常统计数据,需要经常用到hint,又不好意思每次都去麻烦DBA,所以在与DBA交流之后,整理了一份关于我们写ORACLE SQL语句时最常用到的hint使用方法:另外,我们以前的流程都是等应用发布之前,统一提交DBA check,然后再由开发人员修改;但是如果我们开发人员在写这些语句的时候可以知道这些hint的常规用法,这样在和dba check的时候会大大降低返工率,而且不原创 2008-01-10 19:07:00 · 2948 阅读 · 0 评论 -
关于SQL SERVER中系统函数调用的问题
今天,本人因为要写一个取得学生入学学年的function,而function里面需要取得当年学年,就需要用到getdate(),但是在create function时出错;现与大家分享一下我的经验:函数的确定性和副作用函数可以是确定的或不确定的。如果任何时候用一组特定的输入值调用函数时返回的结果总是相同的,则这些函数为确定的。如果每次调用函数时即使用的是相同的一组特定输入值,返回的结果总是不同原创 2008-01-02 19:13:00 · 2604 阅读 · 0 评论 -
PL/SQL DEVELOPER使用技巧
由于这段时间都在忙于写存过,业务逻辑非常的复杂,一个SP中有接近1000行的代码,所以在看代码的时候感觉非常的累,想着要是能有eclipse里面的相关功能就好了,于是我在TOAD和PL/SQL DEVELOPER之间徘徊,试验着相应的功能,最后还是觉得PL/SQL DEVELOPER用起来比较爽; 我看现在我们的开发人员中一般都是用这两个工具,其中以PL/SQL DEVELOP原创 2008-01-02 16:54:00 · 4935 阅读 · 4 评论