在oracle中,使用in方法查询记录的时候,如果in后面的参数个数超过1000个,那么会发生错误,JDBC会抛出"java.sql.SQLException: ORA-01795: 列表中的最大表达式数为 1000"这个异常.比如执行select * from table where id in (1, 2, ..., 1000, 1001, .....,1999)时. 在网上搜了一下,解决方案都是将参数分段,即select * from table where id in (1, …
处理 Oracle SQL in 超过1000 的解决方案 处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项就会报错.这主要是oracle考虑性能问题做的限制.如果要解决次问题,可以用 where id (1, 2, ..., 1000) or id (1001, ...) /** * <b>function:</b> 处理oracle sql 语句in子句中(where id in (1,…
涉及oracle中有关初始化参数文件的几个视图主要有:v$paraemter,v$parameter2,v$system_parameter,v$system_parameter2,v$spparameter 主要区别如下: 一.涉及内容比较 v$paraemter,v$parameter2视图主要是查询基于session级别的参数的相关信息,v$parameter2对于同一个参数多个值分多行的形式展开; v$system_parameter,v$system_parameter2是查询基于sy…
Oracle 查询 in条件个数大于1000的解决方案,我所了解的有如下四种: 1. 把in分组再or: 思路:如果list的长度为2000,可以500个分一组,就有4个组,这4个组之间再or即可. 2. 把in的每个条件分别or 思络:这个和第1个其实原理就是一样的,一开始没想把它当做一个方案,但是我发现jpa-spec框架就是使用的这个方案,所以暂且把它加进来. 3. 使用oracle临时表 思络:借助oracle临时表, 首先开启事务,然后把集合插入临时表,再进行查询使用in或exists…
遇到了这个问题 “oracle中in参数个数限制”,这里记录下, in后括号中的参数个数有限制,Oracle 9i 中个数不能超过256,Oracle 10g个数不能超过1000. 当in的个数大于1000时,解决办法有: (1)对参数进行处理,分成多个in,其中每个in列表中参数都小于1000,如 in(1,2,3.........1000) or  params in(1001,1002...2000). 不过这种方法性能和维护性方面不好 (2)是将in后面的字符串改成了子查询,将in里面的…
处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项就会报错.这主要是oracle考虑性能问题做的限制.如果要解决次问题,可以用 where id (1, 2, ..., 1000) or id (1001, ...) package windy.learn; import java.util.Collection; import org.apache.commons.lang3.StringUtils; p…
今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要给一个自定义变量AMP赋值,一开始我很纳闷,数据是一系列的Insert语句,怎么会有自定义变量呢?后来搜索了一下关键字AMP发现,原来是因为在插入数据中有一个字段的内容如下: http://mobile.three.com.hk/3DX?uid=0676&sid=rt_060908 Oracle把这里的URL的参数连接符&当成是一个自定义变量了,所以要求我给变量AMP赋值.怎么办呢?方法有三: ·方法一:在要插入的SQL语句…
文章出处:http://blog.sina.com.cn/s/blog_5f39af320101gb3f.html 今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要给一个自定义变量AMP赋值,一开始我很纳闷,数据是一系列的Insert语句,怎么会有自定义变量呢?后来搜索了一下关键字AMP发现,原来是因为在插入数据中有一个字段的内容如下: 比如: insert into PERMISSION (PERMIS_ID, PERMIS_NAME, PERMIS_TYPE, REMARK…
oracle初始化参数文件管理 oracle实例是指运行状态下的oracle软件,是由内存结构跟一些进程结构组成的,主要实现数据库的访问跟控制功能,是oracle的核心. 初始化参数文件是oracle实例运行所需要的参数配置文件,oracle实例启动是必须先从参数文件中读取数据. 初始化参数文件分为pfile跟spfile.1. pfile也叫文本初始化参数文件.oracle9i以前版本只有这种参数文件,内容是纯文本的可以直接进行编辑.oracle在安装每一个库是都会建立一个pfile文件,默认…
创建包和包体 create or replace package pkg_pv is procedure set_pv(pv varchar2); function get_pv return varchar2; end; create or replace package body pkg_pv is v varchar2(20); procedure set_pv(pv varchar2) is begin v:=pv; end; function get_pv return varchar…
今天做程序需要用到一个存储过程,然后用php程序调用.  存储过程如下: delimiter $$ CREATE PROCEDURE disagree_upgrade_detail(a int,b text) BEGIN SET NAMES 'utf8'; UPDATE `upgrade_detail` SET `disagree_description`=b WHERE `id`=a; INSERT INTO `disagree_upgrade_detail` SELECT * from `u…
转载自:http://www.cnblogs.com/fmxyw/archive/2008/08/26/1276850.html 在做话务报表,参考一下信息   to_date()与24小时制表示法及mm分钟的显示:一.在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”.如:select to_date('2005-01-…
Oracle中如何插入特殊字符:& 和 ' (多种解决方案)今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要给一个自定义变量AMP赋值,一开始我很纳闷,数据是一系列的Insert语句,怎么会有自定义变量呢?后来搜索了一下关键字AMP发现,原来是因为在插入数据中有一个字段的内容如下: http://mobile.three.com.hk/3DX?uid=0676&sid=rt_060908 Oracle把这里的URL的参数连接符&当成是一个自定义变量了,所以要求我给…
本博客介绍oracle select in超过1000条数据的解决方法,java框架是采用mybatis的,这可以说是一种比较常见的错误:select * from A where id in(...),oracle官方函数做了限定,in里的参数只能1000个,所以超过1000个参数就会报错,解决方法是将集合分为每个集合1000的小集合,然后用or拼起来select * from A where id in(1,2,...,1000) or id in (1001,1002,2000)...,好…
后台 所有用到IN的方法,都要考虑超过1000的可能 if(cameraIds != null && cameraIds.length > 0){sql.append(" AND "); //解决设备超过1000个,Oracle语法错误 sql.append(" ( OBJ.S_CODE IN ( " );for (int i = 0; i < cameraIds.length; i++) { sql.append("'&quo…
项目中需要将系统从SQLServer数据库迁移到Oracle上.由于原大部分数据访问操作都是通过包装了Entity Framework的统一访问入口实现的,所以需要研究Entity Framework从SQLServer转移到Oracle的实现方式. 自从EF4.X起,Oracle就为EF提供了驱动支持,但是很可惜的是不支持CodeFirst模式.庆幸的是从ODP.NET 11.2.0.3.0开始,Oracle官方提供了支持CodeFirst的纯托管代码的EF驱动.但是有以下几点是需要知道的;…
一.Oracle定时器(Job)各时间段写法汇总 对于DBA来说,数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作.但是,Oracle定时器Job时间的处理上,千变万化,今天我把比较常用写法汇总如下: 在总结之前,先把Job的参数一一说明一下: job参数是由Submit()过程返回的binary_ineger.这个值用来唯一标识一个工作: what参数是将被执行的PL/SQL代码块: next_dat…
Oracle中的AWR,全称为Automatic Workload Repository,自动负载信息库.它收集关于特定数据库的操作统计信息和其他统计信息,Oracle以固定的时间间隔(默认为1个小时)为其所有重要的统计信息和负载信息执行一次快照,并将快照存放入AWR中.这些信息在AWR中保留指定的时间(默认为1周),然后执行删除.执行快照的频率和保持时间都是可以自定义的. AWR的引入,为我们分析数据库提供了非常好的便利条件(这方面MySQL就相差了太多).曾经有这样的一个比喻——“一个系统,…
Oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; select * from all_jobs; select * fromuser_jobs; -- 查询字段描述 /* 字段(列)                  类型                 描述 JOB                        NUMBER          任务的唯一标…
最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下,给大家在做项目的时候以参考. 表操作 第一种方案很简单,是数据库表中的某个字段是Clob类型,需要对这个表进行增加修改,网上有很多版本,我试了一种最简单的: new OracleParameter(":Test", OracleType.Clob,System.Text.Encoding.Unicode.…
一,启动执行作业的进程       在 Oracle 中,是使用 “作业队列协调进程(CJQ0)” 这个协调数据库实例的作业队列的后台进程,来监视作业队列中的作业表(JOB$),并启动作业队列进程(Jnnn).而当需要执行作业的时候,作业队列Jnnn 将会执行由 DBMS_JOBS 包创建的作业请求,如下面的一个过程就是从 DBMS_JOBS 包中提取出来的        * 提交的作业请求的过程声明:        PROCEDURE submit    ( job       OUT BIN…
关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999999999999999.00') as amount 不足之处是,如果数值是0的话,会显示为.00而不是0.00. 另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”. 解决方式如下: select decode(salary,0,'0.00',(to_char…
转自http://www.cnblogs.com/songdavid/articles/2435439.html oracle中imp命令详解 Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文 件.imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用 法. 1. 获取帮助 imp help=y 2. 导入一个完整数据库 imp system/manager file=bible_d…
  一.24小时的形式显示出来要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; 二.to_date() function 1.日期格式参数含义说明 D一周中的星期几 DAY天的名字,使用空格填充到9个字符 DD月中的第几天 DDD年中的第几天 DY天的简写名 IW ISO…
大家对通常oracle中的cluster的理解是不准确的,经常和sql server中的cluster index混淆.Cluster是存储一组table的一种方法,这些table共享同一数据块中的某些相同column,并把不同table在这一共享column上值相同的data row存储到同一block上.在sql server中的cluster index强制行根据index key按存储顺序存储,这一点和oracle中的IOT类似. 从下图中我们可以清楚的看到cluster 和非clust…
用了两年Oracle还没写过存储过程,真是十分惭愧,从今天开始学习Oracle存储过程,完全零起点,争取每日一篇学习笔记,可能开始认识的不全面甚至有错误,但坚持下来一定会有收获. . 建立一个存储过程 create or replace PROCEDURE firstPro IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello World!'); END; 其中IS关键字替换为AS关键字结果不会出现任何变化,大多认为他们是等同的,但也有一种说法解释为:一般PACKAGE 或者…
Oracle中HWM与数据库性能的探讨 一.什么是高水位 HWM(high water mark),高水标记,这个概念在segment的存储内容中是比较重要的.简单来说,HWM就是一个segment中已使用和未使用的block的分界线. 在oracle的concept中对于HWM的说明是这样的:在一个segment中,HWM是使用和未使用空间的分界线.HWM在插入数据时,当现有空间不足而进行空间的扩展时会向上移,但删除数据时不会往下移.这就好比是水库的水位,当涨水时,水位往上移,当水退出后,最高…
Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col(id int,txt varchar2(100) encrypt using '算法名称' identified by '密钥' no salt);优点:对应用完全透明缺点:需要数据库管理员管理wallet,增加了管理复杂性,也无法避免数据库管理员查看原文. 2,使用DBMS_CRYPTO包优点:…
使用job模拟定时从元数据表中抽取指定数据进入目标表的过程. 一.创建元数据表 --create table test_origianl create table test_original_data( id number(10,2) primary key, name varchar2(200), descCont varchar2(100), dateType char(5) ); 二.元数据表中插入数据 insert into test_original_data values(2.9,'…
原文:Oracle中的二进制.八进制.十进制.十六进制相互转换函数 Oracle中的二进制.八进制.十进制.十六进制相互转换函数   今天在网上看到一篇关于在oracle中对各种进制数进行转换的帖子,觉得不错,也比较全面,几乎涵盖了经常用到的所有转换.转过来学习一下,也方便以后查询. ================================================================================== 大家经常遇到进制转换的问题,网上搜到的转换只是部…