`
csbison
  • 浏览: 154906 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle开发笔记1

阅读更多

        常用脚本:
    
--1. 循环插入测试语句:

declare
  i int:=1;
begin
    while i<=1000 loop
       insert into t_b values(i,'I love xian'||i);
       i := i+1;
       if (i mod 100 = 0) then
          commit;
       end if;
    end loop;
end;
/

   

* 关于job中的next_date的时间设定:

1小时: TRUNC(SYSDATE,'hh')+1/24

2小时: TRUNC(SYSDATE,'hh')+2/24

1天的七点:  trunc(sysdate,'dd')+1+7/24

 

每个月的十点: add_months(trunc(sysdate,'mm'),1)+10/24

 

    *. PL/SQL (Procedural Language/SQL )Oracle在标准SQL语言上的过程性扩展。    
    *.
服务名和SID分别是什么概念。
        A:
对应就是DataBase名称,因为Oracle数据库没有Database/Schema的概念,对应的是实例。安装Oracle可以安装多个实例。 [SID]即为具体的数据库实例名。
    * SQL*Plus
的语法是 sqlplus user/password @server
       server
是网络服务名,或者称连接标识符

            sqlplus  username/password@servicename

    *. 字符串连接采用 || 符号。例如:
       update serviceinfo  
       set wsdlurl = 'http://exchange.xchg.sz.gov/iexchange/services/' || servicename || '?wsdl'

    *. NVL函数用于将NULL变为实际值,其语法格式为 NVL(exp1,exp2)

    *. LIKE操作符的 通配符包括 %_

    3. Oracle的数据库建表中,默认会创建index(indexcolumn值是表主键)

   4.  当为Oracle创建表的主键或者外键时,如果没有制定外键/主键的名称,则系统会默认起名sys_xxxx的名字。

    5. Oracle服务器更改IP listener服务无法启动的解决方案:
       
修改服务器端的listen.ora,更改客户端的tnsnames.ora即可。
       
一般路径在( E:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN\ )

   6.  TOAD软件显示乱码问题的解决:
        
新建系统环境变量NLS_LANG ,变量值为AMERICAN_AMERICA.ZHS16GBK

   7. PS/SQL中,使用&可以定义临时变量。

 

      高级查询——

     集合操作符
    UNION ALL,UNION,INTERSECT,MINUS

UNION ALL 是两个集合的简单合并;

UNION则是在合并的基础上进行排序和筛选,删除重复的记录,所以效率比较低。

    其他使用函数
    TRANSLATE(x,from_string,to_string)

DECODE(value,search_value,result,default_value)

  

使用CASE表达式来替代多个查询    

select
count( case when price <13 then 1 else null end ) low,
count( case when price between 13 and 15 then 1 else null end ) med,
count( case when price >15 then 1 else null end ) high
from products;

 

   游标
    

1. 游标的作用

   当需要对获取结果集的每一行记录,进行复杂逻辑的判断。这时候就需要用到游标。例如"MERGE_UD_PAIR"这个存储过程

   游标比批量更新Update的优势:对回滚段的耗用更少。

 

2. 游标的类型和属性

       显示游标和隐式游标。

       对于DML语句和单行SELECT INTO语句来说,Oracle会为她们分配隐式游标。

 

       4种属性:

       %FOUND,%NOTFOUND,%ROWCOUNT,%ISOPEN

3. 游标的使用步骤

      

        

4. 对游标的动态参数的赋值

       类似 DBMS_SQL.BIND_VARIABLE(cursor_name8, ':v_imei', v_imei);

    简单示例代码1(包含动态语句):
    

------------------------------------------

---- 游标以及动态语句的应用

-- SQL处理逻辑:

-- 1. 创建fix_XX_TABLE表,里面有正确数据的IMEI,MANU_ID。(PS:建议加上主键索引)

-- 2. 通过游标方式从fix_XX_TABLE表中取数据,然后一条条地去update超大表XX_TABLE(有一亿数据量以上)

-- 3. 动态SQL语句则使用 using来对参数赋值

------------------------------------------

drop table fix_XX_TABLE;

create table fix_XX_TABLE as 

select t1.imei,t2.manu_id from XX_TABLE t1,model t2

where t1.model_id=t1.manu_id and t2.model_id=t1.model_id ;

 

 

declare

cursor p_cur is select imei,manu_id from fix_XX_TABLE;

v_imei  varchar2(30);

v_manu_Id  number;

 

i number default  0;

begin

write_run_log('update_XX_TABLE','update XX_TABLE start','0');

open p_cur;

loop

  fetch p_cur into v_imei,v_manu_id;

  exit when p_cur%notfound;

  execute immediate 'update XX_TABLE set manu_id=:v_manu_id where imei=:v_imei' 

  using v_manu_id,v_imei;

  i:=i+1;

  if mod(i,10000)=0 then commit;

  write_run_log('update_XX_TABLE','commit times='||to_char(i/10000),sqlcode);

  end if;

end loop;

write_run_log('update_XX_TABLE','update XX_TABLE successed',sqlcode);

exception when others then 

write_run_log('update_XX_TABLE','update XX_TABLE failed',sqlerrm);

end;

/

    简单示例代码2 
     

------------------------------------------

---- 游标以及动态语句的应用

-- SQL处理逻辑:

-- 1. 创建fix_XX_TABLE表,里面有正确数据的IMEI,MANU_ID。(PS:建议加上主键索引)

-- 2. 通过游标方式从fix_XX_TABLE表中取数据,然后一条条地去update超大表XX_TABLE(有一亿数据量以上)

-- 3. 动态SQL语句则使用 using来对参数赋值

------------------------------------------

drop table fix_XX_TABLE;

create table fix_XX_TABLE as 

select t1.imei,t2.manu_id from XX_TABLE t1,model t2

where t1.model_id=t1.manu_id and t2.model_id=t1.model_id ;

 

 

declare

cursor p_cur is select imei,manu_id from fix_XX_TABLE;

v_imei  varchar2(30);

v_manu_Id  number;

 

i number default  0;

begin

write_run_log('update_XX_TABLE','update XX_TABLE start','0');

open p_cur;

loop

  fetch p_cur into v_imei,v_manu_id;

  exit when p_cur%notfound;

  execute immediate 'update XX_TABLE set manu_id=:v_manu_id where imei=:v_imei' 

  using v_manu_id,v_imei;

  i:=i+1;

  if mod(i,10000)=0 then commit;

  write_run_log('update_XX_TABLE','commit times='||to_char(i/10000),sqlcode);

  end if;

end loop;

write_run_log('update_XX_TABLE','update XX_TABLE successed',sqlcode);

exception when others then 

write_run_log('update_XX_TABLE','update XX_TABLE failed',sqlerrm);

end;

/

    

 

     ResultSet与游标:

ResultSet就是结果集游标。

Connection创建Statement有一个方法是:Statement createStatement(int resultSetType, int resultSetConcurrency)

第一个参数是结果集游标类型,第二个参数是结果集的并发类型:

     * @param resultSetType a result set type; one of
     *        <code>ResultSet.TYPE_FORWARD_ONLY</code>,
     *        <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or
     *        <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>
     * @param resultSetConcurrency a concurrency type; one of
     *        <code>ResultSet.CONCUR_READ_ONLY</code> or
     *        <code>ResultSet.CONCUR_UPDATABLE</code>

 

一般地读取大数据量,则设置为:

ps = con.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)

若是使用分页读取结果集。则设置为:

ps = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)

 

 

 

分享到:
评论

相关推荐

    Oracle学习笔记

    Oracle学习笔记 Oracle学习笔记是李兴华老师编写的Oracle从入门到精通的学习笔记,涵盖了 Oracle 的多表查询、连接、组函数和分组统计等知识点。在本篇笔记中,李兴华老师详细介绍了多表查询的基本语法、左右连接...

    Oracle学习笔记 PDF

    ### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...

    李兴华Oracle全部笔记

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,由美国甲骨文公司(Oracle Corporation)开发和维护。李兴华Oracle全部笔记是一份详细记录了Oracle相关知识的学习资料,涵盖了从基础概念到高级特性的...

    oracle开发笔记.doc

    Oracle开发笔记主要关注的是SQL语言的基础知识,这是数据库管理和开发的核心部分。SQL,全称为Structured Query Language,即结构化查询语言,是一个国际标准,用于在数据库中进行数据查询、操作和管理。Oracle...

    oracle培训笔记2

    在"Oracle培训笔记2"中,我们可以看到一系列的课程涵盖了XML基础和多行函数的应用,这些都是Oracle数据库管理和开发中的关键知识点。 XML(可扩展标记语言)在Oracle中的应用非常广泛,特别是在数据交换和存储非...

    Oracle开发笔记

    "Oracle开发笔记" Oracle 是一种关系型数据库管理系统,它提供了强大的功能来存储、管理和检索数据。以下是 Oracle 开发笔记的知识点总结: 序列建立 * 序列是一种特殊的数据库对象,可以生成唯一的编号。Oracle...

    Oracle学习笔记.pdf

    Oracle数据库是一款功能强大的企业级数据库管理系统,由甲骨文公司(Oracle Corporation)开发。Oracle数据库的不同版本适应了不同时期的技术需求,从早期的Oracle8到最新的Oracle12C,每一代版本都根据技术发展趋势...

    oracle实用笔记 命令 文档 pdf

    1. **Oracle SQL语法**:SQL(Structured Query Language)是用于管理和操作数据库的标准语言。在Oracle中,SQL用于创建、修改和查询表,以及执行各种数据操作任务。例如,`CREATE TABLE`用于创建新表,`ALTER TABLE...

    Oracle数据库笔记大全

    Oracle数据库是世界上最流行的关系型数据库管理系统之一,广泛应用于企业级数据管理、数据分析和应用程序开发。以下将详细阐述Oracle的一些核心知识点。 1. **基础概念和术语**: - **关系型数据库**: 数据以表格...

    oracle OAF R12开发笔记.part1

    王重东大侠写的,R12版的,包含进阶案例,可与R11的基础案例结合使用

    oracle_sql笔记

    Oracle SQL是数据库管理员和开发人员在Oracle数据库系统中进行数据查询和管理的重要工具。这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括...

    oracle OAF 开发笔记 .part2

    oracle OAF 开发笔记 .part2,王重东大侠所写,内含高级案例,值得推荐

    oracle教程笔记

    Oracle教程笔记涵盖了数据库管理系统Oracle的核心概念、安装配置、SQL语言基础、PL/SQL编程以及数据库管理等多个方面。这篇笔记旨在帮助初学者系统地理解和掌握Oracle技术。 首先,Oracle是全球最大的企业级数据库...

    Oracle学习笔记-日常应用、深入管理、性能优化

    资源名称:Oracle学习笔记-日常应用、深入管理、性能优化内容简介:Oracle学习笔记-日常应用、深入管理、性能优化Oracle 11g是最具代表性的高端关系型数据库管理系统,它在世界各地的大型商务数据库应用系统中被广泛...

    oracle经典笔记

    总的来说,《Oracle经典笔记》这套资料是学习和提升Oracle技术的宝贵资源,无论你是新手还是经验丰富的DBA,都能从中找到有价值的信息,提升自己的数据库管理和开发能力。通过系统地学习和实践,你将能够更好地理解...

    Oracle课堂笔记(很全很详细的Oracle笔记)

    - **Application Express (APEX)**: 用于快速开发和部署Web应用程序。 ### Oracle数据库用户 - **SYS**: 拥有最高权限的用户,通常用于系统管理。 - **SYSTEM**: 普通用户,拥有一定的数据库操作权限。 - **SCOTT**...

    MSDN oracle学习笔记

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,由美国甲骨文公司(Oracle Corporation)开发和维护。MSDN(Microsoft Developer Network)是微软提供的一系列开发资源和技术支持的集合,其中包括对...

    Oracle-EBS开发笔记

    Oracle企业资源规划(E-Business Suite,...通过"Oracle-ERP开发笔记.pdf",你将能够深入理解Oracle EBS的开发流程,学习如何利用其强大的功能来解决实际业务问题。这份笔记将是你在Oracle EBS开发旅程中的宝贵指南。

Global site tag (gtag.js) - Google Analytics