﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Jelver'Sky-文章分类-Oracle/Mysql/Postgres/</title><link>http://www.blogjava.net/jelver/category/7675.html</link><description>“一直很多人说我是天才，但我却相信这个世界没有天才。如果没有卓越的努力和娴熟的球性，你永远不会踢出精彩的足球。我从来不会低估努力的重要性，而这正是我对自己的要求。”
----------------------------------------------------------------------------罗纳尔迪尼奥(Ronaldinho)--------
“不要叫我神童！我不是神童！我所获得的一切成就，都是我用汗水和刻苦训练换来的！” --------------------------丁俊辉（中国斯诺克公开赛冠军）---
</description><language>zh-cn</language><lastBuildDate>Sat, 12 Apr 2008 13:45:35 GMT</lastBuildDate><pubDate>Sat, 12 Apr 2008 13:45:35 GMT</pubDate><ttl>60</ttl><item><title>ORACLE中LOB字段的使用和维护 </title><link>http://www.blogjava.net/jelver/articles/192240.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Fri, 11 Apr 2008 09:41:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/192240.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/192240.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/192240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/192240.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/192240.html</trackback:ping><description><![CDATA[ORACLE中LOB字段的使用和维护 &nbsp; &nbsp; <br />
&nbsp; -------------------------------------------------------------------------------- &nbsp; <br />
&nbsp; 摘要：本文通过实例介绍了在ORACLE数据库中通过DBMS_LOB包使用和维护LOB数据类型的基本方法。 &nbsp; &nbsp; <br />
&nbsp; 关键词：ORACLE &nbsp; &nbsp; DBMS_LOB &nbsp; &nbsp; LOB &nbsp; &nbsp; 维护 &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 中图分类号：TP31 &nbsp; &nbsp; &nbsp; <br />
&nbsp; 1、引言 &nbsp; &nbsp; &nbsp; <br />
&nbsp; 随着社会的发展，在现代信息系统的开发中，需要存储的已不仅仅是简单的文字信息，同时还包括一些图片和音像资料或者是超长的文本。比如开发一套旅游信息系统，每一个景点都有丰富的图片、音像资料和大量的文字介绍。这就要求后台数据库要有存储这些数据的能力。ORACLE公司在其Oracle8i中通过提供LOB字段实现了该功能。 &nbsp; &nbsp; <br />
&nbsp; 为了便于读者的理解，我们先介绍一些基本的概念： &nbsp; &nbsp; <br />
&nbsp; 在ORACLE数据库中，LOB（Large &nbsp; Objects—大对象）是用来存储大量的二进制和文本数据的一种数据类型（一个LOB字段可存储可多达4GB的数据）。目前，它又分为两种类型：内部LOB和外部LOB。内部LOB将数据以字节流的形式存储在数据库的内部。因而，内部LOB的许多操作都可以参与事务，也可以像处理普通数据一样对其进行备份和恢复操作。Oracle8i支持三种类型的内部LOB：BLOB（二进制数据）、CLOB（单字节字符数据）、NCLOB（多字节国家字符数据）。其中CLOB和NCLOB类型适用于存储超长的文本数据，BLOB字段适用于存储大量的二进制数据，如图像、视频、音频等。目前，Oracle8i只支持一种外部LOB类型，即BFILE类型。在数据库内，该类型仅存储数据在操作系统中的位置信息，而数据的实体以外部文件的形式存在于操作系统的文件系统中。因而，该类型所表示的数据是只读的，不参与事务。该类型可帮助用户管理大量的由外部程序访问的文件。 &nbsp; &nbsp; <br />
&nbsp; 为了方便下文的叙述，我们假定使用如下语句在数据库中创建了一张表。 &nbsp; &nbsp; <br />
&nbsp; CREATE &nbsp; TABLE &nbsp; view_sites_info &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; ( &nbsp; &nbsp; &nbsp; <br />
&nbsp; site_id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NUMBER(3), &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; audio &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BLOB &nbsp; &nbsp; DEFAULT &nbsp; empty_blob(), &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document &nbsp; &nbsp; &nbsp; CLOB &nbsp; &nbsp; DEFAULT &nbsp; empty_clob(), &nbsp; &nbsp; <br />
&nbsp; video_file &nbsp; &nbsp; &nbsp; BFILE &nbsp; &nbsp; DEFAULT &nbsp; NULL, &nbsp; &nbsp; <br />
&nbsp; constraint &nbsp; PK_TAB_view_sites_info &nbsp; primary &nbsp; key &nbsp; (site_id) &nbsp; &nbsp; <br />
&nbsp; ); &nbsp; <br />
&nbsp; 2、LOB的使用和维护 &nbsp; &nbsp; <br />
&nbsp; ORACL提供了多种使用和维护LOB的方式，如使用PL/SQL &nbsp; DBMS_LOB包、调用OCI（Oracle &nbsp; Call &nbsp; Interface）、使用Proc &nbsp; * &nbsp; C/C++、使用JDBC等。其中最为方便有效的是使用PL/SQL调用DBMS_LOB包，本文就将介绍该方法。 &nbsp; &nbsp; <br />
&nbsp; 在Oracle中，存储在LOB中数据称为LOB的值，如使用Select &nbsp; 对某一LOB字段进行选择，则返回的不是LOB的值，而是该LOB字段的定位器（可以理解为指向LOB值的指针）。如执行如下的SQL语句： &nbsp; &nbsp; <br />
&nbsp; DELCARE &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AUDIO_INFO &nbsp; &nbsp; BLOB； &nbsp; &nbsp; <br />
&nbsp; BENGIN &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SELECT &nbsp; audio &nbsp; INTO &nbsp; AUDIO_INFO &nbsp; FROM &nbsp; view_sites_info &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WHERE &nbsp; site_id=100; &nbsp; &nbsp; <br />
&nbsp; END; &nbsp; &nbsp; <br />
&nbsp; / &nbsp; &nbsp; <br />
&nbsp; 存储在AUDIO_INFO变量中的就是LOB定位器，而不是LOB的值。而要对某一LOB的值进行访问和维护操作，必需通过其定位器来进行。DBMS_LOB包中提供的所有函数和过程都以LOB定位器作为参数。 &nbsp; &nbsp; <br />
&nbsp; 2.1内部LOB &nbsp; &nbsp; <br />
&nbsp; DBMS_LOB包中主要提供了以下几个过程供用户对内部LOB字段进行维护。 &nbsp; &nbsp; <br />
&nbsp; APPEND（） &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 将源LOB中的内容加到目的LOB中 &nbsp; &nbsp; <br />
&nbsp; COPY（） &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 从源LOB中复制数据到目的LOB &nbsp; &nbsp; <br />
&nbsp; ERASE（） &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 删除LOB中全部或部分内容 &nbsp; &nbsp; <br />
&nbsp; TRIM（） &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 将LOB值减少到指定的长度 &nbsp; &nbsp; <br />
&nbsp; WRITE（） &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 向LOB &nbsp; 中写入数据 &nbsp; &nbsp; <br />
&nbsp; COMPARE（） &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 比较两个同种数据类型的LOB的部分或全部值是否相同 &nbsp; &nbsp; <br />
&nbsp; GETLENGTH（） &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 获取LOB的长度 &nbsp; &nbsp; <br />
&nbsp; READ（） &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 从LOB中读出数据 &nbsp; &nbsp; <br />
&nbsp; 下面我们以最为常用的读和写为例详细介绍这些过程的用法。 &nbsp; &nbsp; <br />
&nbsp; 首先介绍一下写过程。该过程的语法为： &nbsp; &nbsp; <br />
&nbsp; PROCEDURE &nbsp; WRITE &nbsp; ( &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lob_loc &nbsp; &nbsp; IN &nbsp; OUT &nbsp; &nbsp; BLOB, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount &nbsp; &nbsp; &nbsp; IN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BINARY_INTEGER, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; offset &nbsp; &nbsp; &nbsp; IN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INTEGER, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer &nbsp; &nbsp; &nbsp; IN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RAW); &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PROCEDURE &nbsp; WRITE &nbsp; ( &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lob_loc &nbsp; &nbsp; IN &nbsp; OUT &nbsp; &nbsp; CLOB &nbsp; &nbsp; &nbsp; CHARACTER &nbsp; SET &nbsp; ANY_CS, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount &nbsp; &nbsp; &nbsp; IN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BINARY_INTEGER, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; offset &nbsp; &nbsp; &nbsp; IN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INTEGER, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer &nbsp; &nbsp; &nbsp; IN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; VARCHAR2 &nbsp; CHARACTER &nbsp; SET &nbsp; lob_loc%CHARSET); &nbsp; &nbsp; <br />
&nbsp; 各参数的含义为： &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lob_loc：要写入的LOB定位器 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount：写入LOB中的字节数 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; offset：指定开始操作的偏移量 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer： &nbsp; 指定写操作的缓冲区 &nbsp; &nbsp; <br />
&nbsp; 下面的代码就是运用该过程向LOB字段写入数据的示例。 &nbsp; &nbsp; <br />
&nbsp; DECLARE &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lobloc &nbsp; CLOB; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer &nbsp; VARCHAR2(2000); &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount &nbsp; NUMBER &nbsp; := &nbsp; 20; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; offset &nbsp; NUMBER &nbsp; := &nbsp; 1; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; BEGIN &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --初始化要写入的数据 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer &nbsp; := &nbsp; 'This &nbsp; is &nbsp; a &nbsp; writing &nbsp; example'; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount &nbsp; := &nbsp; length(buffer); &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SELECT &nbsp; document &nbsp; INTO &nbsp; lobloc &nbsp; &nbsp; -- &nbsp; 获取定位器并锁定行 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FROM &nbsp; &nbsp; view_sites_info &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WHERE &nbsp; site_id &nbsp; = &nbsp; 100 &nbsp; FOR &nbsp; UPDATE; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dbms_lob.write(lobloc,amount,1,buffer); &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COMMIT; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; END; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; / &nbsp; &nbsp; <br />
&nbsp; 需要特别指出的是： &nbsp; &nbsp; <br />
&nbsp; I. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 在调用写过程前一定要使用SELECT语句检索到定位器且用 &nbsp; FOR &nbsp; UPDATE &nbsp; 子句锁定行，否则不能更新LOB； &nbsp; &nbsp; <br />
&nbsp; II. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 写过程从offset指定的位置开始，向LOB中写入长度为amount的数据，原LOB中在这个范围内的任何数据都将被覆盖。 &nbsp; &nbsp; <br />
&nbsp; III. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 缓冲区的最大容量为32767字节，因此在写入大量数据时需多次调用该过程。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; 下面再来介绍一下读过程： &nbsp; &nbsp; <br />
&nbsp; 该过程的语法为： &nbsp; &nbsp; <br />
&nbsp; PROCEDURE &nbsp; READ &nbsp; ( &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lob_loc &nbsp; &nbsp; &nbsp; IN &nbsp; &nbsp; &nbsp; &nbsp; BLOB, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount &nbsp; &nbsp; &nbsp; &nbsp; IN &nbsp; OUT &nbsp; &nbsp; BINARY_INTEGER, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; offset &nbsp; &nbsp; &nbsp; &nbsp; IN &nbsp; &nbsp; &nbsp; &nbsp; INTEGER, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer &nbsp; &nbsp; &nbsp; &nbsp; OUT &nbsp; &nbsp; &nbsp; RAW); &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; PROCEDURE &nbsp; READ &nbsp; ( &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lob_loc &nbsp; &nbsp; &nbsp; IN &nbsp; &nbsp; &nbsp; &nbsp; CLOB &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CHARACTER &nbsp; SET &nbsp; ANY_CS, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount &nbsp; &nbsp; &nbsp; &nbsp; IN &nbsp; OUT &nbsp; &nbsp; BINARY_INTEGER, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; offset &nbsp; &nbsp; &nbsp; &nbsp; IN &nbsp; &nbsp; &nbsp; &nbsp; INTEGER, &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer &nbsp; &nbsp; &nbsp; &nbsp; OUT &nbsp; &nbsp; &nbsp; VARCHAR2 &nbsp; CHARACTER &nbsp; SET &nbsp; lob_loc%CHARSET); &nbsp; &nbsp; <br />
&nbsp; 各参数的含义为： &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lob_loc：要读取的LOB定位器 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount：要读取的字节数 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; offset：开始读取操作的偏移量 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer： &nbsp; 存储读操作结果的缓冲区 &nbsp; &nbsp; <br />
&nbsp; 下面的代码演示了如何使用该过程读取LOB字段中的数据： &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; DECLARE &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lobloc &nbsp; CLOB; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer &nbsp; VARCHAR2(2000); &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount &nbsp; NUMBER &nbsp; := &nbsp; 2; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; offset &nbsp; NUMBER &nbsp; := &nbsp; 6; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; BEGIN &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SELECT &nbsp; document &nbsp; INTO &nbsp; lobloc &nbsp; &nbsp; --获取定位器 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FROM &nbsp; lob_store &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WHERE &nbsp; lob_id &nbsp; = &nbsp; 100; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dbms_lob.read(lobloc,amount,offset,buffer);--读取数据到缓冲区 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dbms_output.put_line(buffer);--显示缓冲区中的数据 &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COMMIT; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; END; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; /&nbsp;&nbsp; <br />
<img src ="http://www.blogjava.net/jelver/aggbug/192240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2008-04-11 17:41 <a href="http://www.blogjava.net/jelver/articles/192240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>处理CLOB字段的动态PL/SQL  (zhuan)   </title><link>http://www.blogjava.net/jelver/articles/192127.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Fri, 11 Apr 2008 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/192127.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/192127.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/192127.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/192127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/192127.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">动态PL</span><span style="color: #808080">/</span><span style="color: #000000">SQL,对CLOB字段操作可传递表名table_name，表的唯一标志字段名field_id，clob字段名field_name，记录号v_id，开始处理字符的位置v_pos，传入的字符串变量v_clob<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />修改CLOB的PL</span><span style="color: #808080">/</span><span style="color: #000000">SQL过程：updateclob<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">or</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">replace</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">procedure</span><span style="color: #000000">&nbsp;updateclob(<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">number</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_pos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">number</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_clob&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">is</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lobloc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clob;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c_clob&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">32767</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;amt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;binary_integer;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;binary_integer;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query_str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1000</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">begin</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;pos:</span><span style="color: #808080">=</span><span style="color: #000000">v_pos</span><span style="color: #808080">*</span><span style="font-weight: bold; color: #800000">32766</span><span style="color: #808080">+</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;amt&nbsp;:</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;length(v_clob);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;c_clob:</span><span style="color: #808080">=</span><span style="color: #000000">v_clob;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;query_str&nbsp;:</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">select&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">field_name</span><span style="color: #808080">||</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;from&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">table_name</span><span style="color: #808080">||</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;where&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">field_id</span><span style="color: #808080">||</span><span style="color: #ff0000">'</span><span style="color: #ff0000">=&nbsp;:id&nbsp;for&nbsp;update&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">initialize&nbsp;buffer&nbsp;with&nbsp;data&nbsp;to&nbsp;be&nbsp;inserted&nbsp;or&nbsp;updated</span><span style="color: #008080"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">EXECUTE</span><span style="color: #000000">&nbsp;IMMEDIATE&nbsp;query_str&nbsp;</span><span style="color: #0000ff">INTO</span><span style="color: #000000">&nbsp;lobloc&nbsp;USING&nbsp;v_id;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">from&nbsp;pos&nbsp;position,&nbsp;write&nbsp;32766&nbsp;varchar2&nbsp;into&nbsp;lobloc</span><span style="color: #008080"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;dbms_lob.write(lobloc,&nbsp;amt,&nbsp;pos,&nbsp;c_clob);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">commit</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />exception<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">when</span><span style="color: #000000">&nbsp;others&nbsp;</span><span style="color: #0000ff">then</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">rollback</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">end</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #808080">/</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />用法说明：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />在插入或修改以前，先把其它字段插入或修改，CLOB字段设置为空empty_clob()，<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />然后调用以上的过程插入大于2048到32766个字符。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />如果需要插入大于32767个字符，编一个循环即可解决问题。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />查询CLOB的PL</span><span style="color: #808080">/</span><span style="color: #000000">SQL函数：getclob<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">or</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">replace</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;getclob(<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">number</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_pos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">number</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">is</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lobloc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clob;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">32767</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;amount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">number</span><span style="color: #000000">&nbsp;:</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">2000</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">number</span><span style="color: #000000">&nbsp;:</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query_str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1000</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">begin</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;query_str&nbsp;:</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">select&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">field_name</span><span style="color: #808080">||</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;from&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">table_name</span><span style="color: #808080">||</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;where&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">field_id</span><span style="color: #808080">||</span><span style="color: #ff0000">'</span><span style="color: #ff0000">=&nbsp;:id&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">initialize&nbsp;buffer&nbsp;with&nbsp;data&nbsp;to&nbsp;be&nbsp;found</span><span style="color: #008080"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">EXECUTE</span><span style="color: #000000">&nbsp;IMMEDIATE&nbsp;query_str&nbsp;</span><span style="color: #0000ff">INTO</span><span style="color: #000000">&nbsp;lobloc&nbsp;USING&nbsp;v_id;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;offset:</span><span style="color: #808080">=</span><span style="color: #000000">offset</span><span style="color: #808080">+</span><span style="color: #000000">(v_pos</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">)</span><span style="color: #808080">*</span><span style="font-weight: bold; color: #800000">2000</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">read&nbsp;2000&nbsp;varchar2&nbsp;from&nbsp;the&nbsp;buffer</span><span style="color: #008080"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;dbms_lob.</span><span style="color: #0000ff">read</span><span style="color: #000000">(lobloc,amount,offset,buffer);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;buffer;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />exception<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">when</span><span style="color: #000000">&nbsp;no_data_found&nbsp;</span><span style="color: #0000ff">then</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;buffer;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">end</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #808080">/</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />用法说明：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />用select&nbsp;getclob(table_name,field_id,field_name,v_id,v_pos)&nbsp;</span><span style="color: #0000ff">as</span><span style="color: #000000">&nbsp;partstr&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />可以从CLOB字段中取2000个字符到partstr中，<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />编一个循环可以把partstr组合成dbms_lob.getlength(field_name)长度的目标字符串。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />调用PL</span><span style="color: #808080">/</span><span style="color: #000000">SQL过程的方法:<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;SQL</span><span style="color: #808080">*</span><span style="color: #000000">PLUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQL</span><span style="color: #808080">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">EXEC</span><span style="color: #000000">&nbsp;过程名</span><span style="color: #ff0000">[</span><span style="color: #ff0000">(参数)</span><span style="color: #ff0000">]</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">Procedure</span><span style="color: #000000">&nbsp;Builder&nbsp;&nbsp;&nbsp;&nbsp;PL</span><span style="color: #808080">/</span><span style="color: #000000">SQL</span><span style="color: #808080">&gt;</span><span style="color: #000000">过程名</span><span style="color: #ff0000">[</span><span style="color: #ff0000">(参数)</span><span style="color: #ff0000">]</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;JAVA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;{&nbsp;过程名</span><span style="color: #ff0000">[</span><span style="color: #ff0000">(参数)</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;};<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;PHP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">BEGIN</span><span style="color: #000000">&nbsp;{&nbsp;过程名</span><span style="color: #ff0000">[</span><span style="color: #ff0000">(参数)</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;}&nbsp;</span><span style="color: #0000ff">END</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/jelver/aggbug/192127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2008-04-11 11:40 <a href="http://www.blogjava.net/jelver/articles/192127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle常见日期处理</title><link>http://www.blogjava.net/jelver/articles/173985.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Wed, 09 Jan 2008 05:34:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/173985.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/173985.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/173985.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/173985.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/173985.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">TO_DATE格式&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff00ff">Day</span><span style="color: #000000">:&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />dd&nbsp;</span><span style="font-weight: bold; color: #000000">number</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">12</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />dy&nbsp;abbreviated&nbsp;fri&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff00ff">day</span><span style="color: #000000">&nbsp;spelled&nbsp;out&nbsp;friday&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />ddspth&nbsp;spelled&nbsp;out,&nbsp;ordinal&nbsp;twelfth&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff00ff">Month</span><span style="color: #000000">:&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />mm&nbsp;</span><span style="font-weight: bold; color: #000000">number</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">03</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />mon&nbsp;abbreviated&nbsp;mar&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff00ff">month</span><span style="color: #000000">&nbsp;spelled&nbsp;out&nbsp;march&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff00ff">Year</span><span style="color: #000000">:&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />yy&nbsp;two&nbsp;digits&nbsp;</span><span style="font-weight: bold; color: #800000">98</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />yyyy&nbsp;four&nbsp;digits&nbsp;</span><span style="font-weight: bold; color: #800000">1998</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />24小时格式下时间范围为：&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">00</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">-</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">23</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">59</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">59</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />12小时格式下时间范围为：&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">00</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">-</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">12</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">59</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">59</span><span style="color: #000000">&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />日期和字符转换函数用法（to_date,to_char）&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">2</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;to_char(&nbsp;to_date(</span><span style="font-weight: bold; color: #800000">222</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">J</span><span style="color: #ff0000">'</span><span style="color: #000000">),</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Jsp</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />显示Two&nbsp;Hundred&nbsp;Twenty</span><span style="color: #808080">-</span><span style="color: #000000">Two&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">3</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />求某天是星期几&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;to_char(to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">2002-08-26</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyy-mm-dd</span><span style="color: #ff0000">'</span><span style="color: #000000">),</span><span style="color: #ff0000">'</span><span style="color: #ff0000">day</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />星期一&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;to_char(to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">2002-08-26</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyy-mm-dd</span><span style="color: #ff0000">'</span><span style="color: #000000">),</span><span style="color: #ff0000">'</span><span style="color: #ff0000">day</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">NLS_DATE_LANGUAGE&nbsp;=&nbsp;American</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />monday&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />设置日期语言&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">ALTER</span><span style="color: #000000">&nbsp;SESSION&nbsp;</span><span style="color: #0000ff">SET</span><span style="color: #000000">&nbsp;NLS_DATE_LANGUAGE</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">AMERICAN</span><span style="color: #ff0000">'</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />也可以这样&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />TO_DATE&nbsp;(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">2002-08-26</span><span style="color: #ff0000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">YYYY-mm-dd</span><span style="color: #ff0000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">NLS_DATE_LANGUAGE&nbsp;=&nbsp;American</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">4</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />两个日期间的天数&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">floor</span><span style="color: #000000">(sysdate&nbsp;</span><span style="color: #808080">-</span><span style="color: #000000">&nbsp;to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">20020405</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyymmdd</span><span style="color: #ff0000">'</span><span style="color: #000000">))&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">5</span><span style="color: #000000">.&nbsp;时间为null的用法&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;id,&nbsp;active_date&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;table1&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">UNION</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">,&nbsp;TO_DATE(</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />注意要用TO_DATE(</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">6</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />a_date&nbsp;</span><span style="color: #808080">between</span><span style="color: #000000">&nbsp;to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">20011201</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyymmdd</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">20011231</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyymmdd</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />所以，当时间需要精确的时候，觉得to_char还是必要的&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">7</span><span style="color: #000000">.&nbsp;日期格式冲突问题&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />输入的格式要看你安装的ORACLE字符集的类型,&nbsp;比如:&nbsp;US7ASCII,&nbsp;date格式的类型就是:&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">01-Jan-01</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;system&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;NLS_DATE_LANGUAGE&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;American&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">alter</span><span style="color: #000000">&nbsp;session&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;NLS_DATE_LANGUAGE&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;American&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />或者在to_date中写&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;to_char(to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">2002-08-26</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyy-mm-dd</span><span style="color: #ff0000">'</span><span style="color: #000000">),</span><span style="color: #ff0000">'</span><span style="color: #ff0000">day</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">NLS_DATE_LANGUAGE&nbsp;=&nbsp;American</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />注意我这只是举了NLS_DATE_LANGUAGE，当然还有很多，&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />可查看&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;nls_session_parameters&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;V$NLS_PARAMETERS&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">8</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">count</span><span style="color: #000000">(</span><span style="color: #808080">*</span><span style="color: #000000">)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;(&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;rownum</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;rnum&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;all_objects&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;rownum&nbsp;</span><span style="color: #808080">&lt;=</span><span style="color: #000000">&nbsp;to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">2002-02-28</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyy-mm-dd</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">-</span><span style="color: #000000">&nbsp;to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">2002-&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />02-01</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyy-mm-dd</span><span style="color: #ff0000">'</span><span style="color: #000000">)</span><span style="color: #808080">+</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;to_char(&nbsp;to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">2002-02-01</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyy-mm-dd</span><span style="color: #ff0000">'</span><span style="color: #000000">)</span><span style="color: #808080">+</span><span style="color: #000000">rnum</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">D</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;(&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">1</span><span style="color: #ff0000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">7</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />查找2002</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">02</span><span style="color: #808080">-</span><span style="color: #000000">28至2002</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">02</span><span style="color: #808080">-</span><span style="color: #000000">01间除星期一和七的天数&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />在前后分别调用DBMS_UTILITY.GET_TIME,&nbsp;让后将结果相减(得到的是1</span><span style="color: #808080">/</span><span style="color: #000000">100秒,&nbsp;而不是毫秒).&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">9</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;months_between(to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">01-31-1999</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">MM-DD-YYYY</span><span style="color: #ff0000">'</span><span style="color: #000000">),&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">12-31-1998</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">MM-DD-YYYY</span><span style="color: #ff0000">'</span><span style="color: #000000">))&nbsp;"MONTHS"&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;DUAL;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;months_between(to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">02-01-1999</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">MM-DD-YYYY</span><span style="color: #ff0000">'</span><span style="color: #000000">),&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">12-31-1998</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">MM-DD-YYYY</span><span style="color: #ff0000">'</span><span style="color: #000000">))&nbsp;"MONTHS"&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;DUAL;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">1.03225806451613</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">10</span><span style="color: #000000">.&nbsp;Next_day的用法&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Next_day(date,&nbsp;</span><span style="color: #ff00ff">day</span><span style="color: #000000">)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Monday</span><span style="color: #808080">-</span><span style="color: #000000">Sunday,&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;format&nbsp;code&nbsp;</span><span style="color: #ff00ff">DAY</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Mon</span><span style="color: #808080">-</span><span style="color: #000000">Sun,&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;format&nbsp;code&nbsp;DY&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">1</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">7</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;format&nbsp;code&nbsp;D&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">11</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;to_char(sysdate,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">hh:mi:ss</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;TIME&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;all_objects&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />注意：第一条记录的TIME&nbsp;与最后一行是一样的&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />可以建立一个函数来处理这个问题&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">or</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">replace</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;sys_date&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;date&nbsp;</span><span style="color: #0000ff">is</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">begin</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;sysdate;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">end</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;to_char(sys_date,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">hh:mi:ss</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;all_objects;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">12</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />获得小时数&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;EXTRACT(HOUR&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">TIMESTAMP</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">2001-02-16&nbsp;2:38:40</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;offer&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SQL</span><span style="color: #808080">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;sysdate&nbsp;,to_char(sysdate,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">hh</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SYSDATE&nbsp;TO_CHAR(SYSDATE,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">HH</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">------------------&nbsp;---------------------&nbsp;</span><span style="color: #008080"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">2003</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">10</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">13</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">19</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">35</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">21</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">07</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SQL</span><span style="color: #808080">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;sysdate&nbsp;,to_char(sysdate,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">hh24</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SYSDATE&nbsp;TO_CHAR(SYSDATE,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">HH24</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">------------------&nbsp;-----------------------&nbsp;</span><span style="color: #008080"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">2003</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">10</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">13</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">19</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">35</span><span style="color: #000000">:</span><span style="font-weight: bold; color: #800000">21</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">19</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />获取年月日与此类似&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">13</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />年月日的处理&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;older_date,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />newer_date,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />years,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />months,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff00ff">abs</span><span style="color: #000000">(&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />trunc(&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />newer_date</span><span style="color: #808080">-</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />add_months(&nbsp;older_date,years</span><span style="color: #808080">*</span><span style="font-weight: bold; color: #800000">12</span><span style="color: #808080">+</span><span style="color: #000000">months&nbsp;)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />)&nbsp;days&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;(&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />trunc(months_between(&nbsp;newer_date,&nbsp;older_date&nbsp;)</span><span style="color: #808080">/</span><span style="font-weight: bold; color: #800000">12</span><span style="color: #000000">)&nbsp;YEARS,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />mod(trunc(months_between(&nbsp;newer_date,&nbsp;older_date&nbsp;)),&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">12</span><span style="color: #000000">&nbsp;)&nbsp;MONTHS,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />newer_date,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />older_date&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;(&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;hiredate&nbsp;older_date,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />add_months(hiredate,rownum)</span><span style="color: #808080">+</span><span style="color: #000000">rownum&nbsp;newer_date&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;emp&nbsp;)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">14</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />处理月份天数不定的办法&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;to_char(add_months(last_day(sysdate)&nbsp;</span><span style="color: #808080">+</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">2</span><span style="color: #000000">),&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyymmdd</span><span style="color: #ff0000">'</span><span style="color: #000000">),last_day(sysdate)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">16</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />找出今年的天数&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;add_months(trunc(sysdate,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">year</span><span style="color: #ff0000">'</span><span style="color: #000000">),&nbsp;</span><span style="font-weight: bold; color: #800000">12</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">-</span><span style="color: #000000">&nbsp;trunc(sysdate,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">year</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;dual&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />闰年的处理方法&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />to_char(&nbsp;last_day(&nbsp;to_date(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">02</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">||</span><span style="color: #000000">&nbsp;:</span><span style="color: #ff00ff">year</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">mmyyyy</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;),&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">dd</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />如果是28就不是闰年&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="font-weight: bold; color: #800000">17</span><span style="color: #000000">.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />yyyy与rrrr的区别&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff0000">'</span><span style="color: #ff0000">YYYY99&nbsp;TO_C&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />-------&nbsp;----&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />yyyy&nbsp;99&nbsp;0099&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />rrrr&nbsp;99&nbsp;1999&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />yyyy&nbsp;01&nbsp;0001&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />rrrr&nbsp;01&nbsp;2001&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />18.不同时区的处理&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />select&nbsp;to_char(&nbsp;NEW_TIME(&nbsp;sysdate,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000">GMT</span><span style="color: #ff0000">'</span><span style="color: #ff0000">,</span><span style="color: #ff0000">'</span><span style="color: #000000">EST</span><span style="color: #ff0000">'</span><span style="color: #ff0000">),&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000">dd</span><span style="color: #808080">/</span><span style="color: #000000">mm</span><span style="color: #808080">/</span><span style="color: #000000">yyyy&nbsp;hh:mi:ss</span><span style="color: #ff0000">'</span><span style="color: #ff0000">)&nbsp;,sysdate&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />from&nbsp;dual;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />19.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />5秒钟一个间隔&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Select&nbsp;TO_DATE(FLOOR(TO_CHAR(sysdate,</span><span style="color: #ff0000">'</span><span style="color: #000000">SSSSS</span><span style="color: #ff0000">'</span><span style="color: #ff0000">)/300)&nbsp;*&nbsp;300,</span><span style="color: #ff0000">'</span><span style="color: #000000">SSSSS</span><span style="color: #ff0000">'</span><span style="color: #ff0000">)&nbsp;,TO_CHAR(sysdate,</span><span style="color: #ff0000">'</span><span style="color: #000000">SSSSS</span><span style="color: #ff0000">'</span><span style="color: #ff0000">)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />from&nbsp;dual&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />2002-11-1&nbsp;9:55:00&nbsp;35786&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SSSSS表示5位秒数&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />20.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />一年的第几天&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />select&nbsp;TO_CHAR(SYSDATE,</span><span style="color: #ff0000">'</span><span style="color: #000000">DDD</span><span style="color: #ff0000">'</span><span style="color: #ff0000">),sysdate&nbsp;from&nbsp;dual&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />310&nbsp;2002-11-6&nbsp;10:03:51&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />21.计算小时,分,秒,毫秒&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />select&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Days,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />TRUNC(A*24)&nbsp;Hours,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />TRUNC(A*24*60&nbsp;-&nbsp;60*TRUNC(A*24))&nbsp;Minutes,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />TRUNC(A*24*60*60&nbsp;-&nbsp;60*TRUNC(A*24*60))&nbsp;Seconds,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />TRUNC(A*24*60*60*100&nbsp;-&nbsp;100*TRUNC(A*24*60*60))&nbsp;mSeconds&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />from&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />(&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />select&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />trunc(sysdate)&nbsp;Days,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />sysdate&nbsp;-&nbsp;trunc(sysdate)&nbsp;A&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />from&nbsp;dual&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />select&nbsp;*&nbsp;from&nbsp;tabname&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />order&nbsp;by&nbsp;decode(mode,</span><span style="color: #ff0000">'</span><span style="color: #000000">FIFO</span><span style="color: #ff0000">'</span><span style="color: #ff0000">,1,-1)*to_char(rq,</span><span style="color: #ff0000">'</span><span style="color: #000000">yyyymmddhh24miss</span><span style="color: #ff0000">'</span><span style="color: #ff0000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />//&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />floor((date2-date1)&nbsp;/365)&nbsp;作为年&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />floor((date2-date1,&nbsp;365)&nbsp;/30)&nbsp;作为月&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />mod(mod(date2-date1,&nbsp;365),&nbsp;30)作为日.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />23.next_day函数&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。</span></div>
<img src ="http://www.blogjava.net/jelver/aggbug/173985.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2008-01-09 13:34 <a href="http://www.blogjava.net/jelver/articles/173985.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> oracle SQL性能优化(转)</title><link>http://www.blogjava.net/jelver/articles/172298.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Wed, 02 Jan 2008 11:51:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/172298.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/172298.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/172298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/172298.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/172298.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp; （1）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选择最有效率的表名顺序(只在基于规则的优化器中有效)：ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名，FROM子句中写在最后的表(基础表 driving table)将被最先处理，在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选...&nbsp;&nbsp;<a href='http://www.blogjava.net/jelver/articles/172298.html'>阅读全文</a><img src ="http://www.blogjava.net/jelver/aggbug/172298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2008-01-02 19:51 <a href="http://www.blogjava.net/jelver/articles/172298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle复杂查询语句</title><link>http://www.blogjava.net/jelver/articles/172295.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Wed, 02 Jan 2008 11:38:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/172295.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/172295.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/172295.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/172295.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/172295.html</trackback:ping><description><![CDATA[<p>1.查询语句的使用<br />
使用 select语句和子查询(subquery)可以从一个或多个表,视图,实体试图中返回数据.<br />
&nbsp;<br />
1.1相关子查询<br />
可以将子查询(as subquery)或in或exists当成where的一个条件的一部分,这样的查询称为子查询<br />
&nbsp; .where中可以包含一个select语句的子查询<br />
&nbsp; .where中可以包含in,exists语句<br />
&nbsp; .最多可以嵌套16层<br />
&nbsp; .层次过多会影响性能<br />
&nbsp; [例]简单子查询实例<br />
&nbsp; 查询是否有的专家既以研究所的名义来申请基金项目,又以大学系为单位申请项目<br />
&nbsp; (按规定只能以一个单位来申请)<br />
&nbsp; SQL&gt; create table univ_subject<br />
&nbsp; 2&nbsp;&nbsp;&nbsp; (<br />
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varchar2(12) not null,<br />
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; per_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number&nbsp;&nbsp;&nbsp;&nbsp; not null,<br />
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dept_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varchar2(20)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; 6&nbsp;&nbsp;&nbsp; );<br />
&nbsp; SQL&gt; insert into univ_subject&nbsp; values('gaoqianjing',1001,'信息工程系');<br />
&nbsp; SQL&gt; insert into univ_subject&nbsp; values('wangbing',1002,'物理系');<br />
&nbsp; SQL&gt; insert into univ_subject&nbsp; values('liming',1003,'化学系');<br />
&nbsp; ===============<br />
&nbsp;&nbsp; SQL&gt; create table&nbsp; colle_subject<br />
&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp; (<br />
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colle_name&nbsp;&nbsp;&nbsp; varchar2(20),<br />
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; per_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number <br />
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; );<br />
&nbsp; SQL&gt; insert into colle_subject values('电子研究所',1001);<br />
&nbsp; SQL&gt;&nbsp; insert into colle_subject values('物理研究所',1005);<br />
&nbsp; ================<br />
&nbsp; SQL&gt; select name,per_id,dept_name from univ_subject where per_id in <br />
&nbsp; 2&nbsp;&nbsp;&nbsp; (select per_id from colle_subject);</p>
<p>&nbsp; NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PER_ID&nbsp;&nbsp; DEPT_NAME<br />
&nbsp; ------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---------&nbsp;&nbsp;&nbsp;&nbsp; --------------------<br />
&nbsp; gaoqianjing&nbsp; 1001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 信息工程系</p>
<p>1.2外连接<br />
&nbsp;[例]外连接实例<br />
&nbsp;招生中所有学生的信息放在students表中,而部分有特长的学生在另一个表中stuent_skill中同样有该学生<br />
&nbsp;的信息。现在要全部列出所有学生,如果某个学生在表student_skill中就有其特长信息,并显示特长信息,如果<br />
&nbsp;某个学生没有特长就显示特长问空.<br />
&nbsp;SQL&gt;&nbsp; create table students<br />
&nbsp; 2&nbsp;&nbsp;&nbsp; (<br />
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st_id&nbsp;&nbsp;&nbsp; varchar2(20),<br />
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name&nbsp; varchar2(10),<br />
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; age&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number(2),<br />
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tol_score&nbsp;&nbsp; number(3)<br />
&nbsp; 7&nbsp;&nbsp;&nbsp; ) ;<br />
SQL&gt;&nbsp;&nbsp; insert into students values('973231','wangbindu',22,501);<br />
SQL&gt;&nbsp;&nbsp; insert into students values('973232','zhuzhijing',21,538);<br />
SQL&gt;&nbsp; insert into students values('973233','gaojing',21,576);<br />
===================</p>
<p>SQL&gt;&nbsp; create table student_skill<br />
&nbsp; 2&nbsp;&nbsp; (<br />
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st_id&nbsp; varchar2(20),<br />
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; skill&nbsp;&nbsp;&nbsp; varchar2(20)<br />
&nbsp; 5&nbsp; );<br />
SQL&gt;&nbsp; insert into student_skill values('973231','篮球');<br />
SQL&gt;&nbsp; insert into student_skill(st_id) values('973232');<br />
SQL&gt;&nbsp; insert into student_skill values('973233','足球');<br />
===================</p>
<p>SQL&gt;&nbsp;&nbsp; select a.* , b.skill from students a,student_skill b where a.st_id=b.st_id(+) <br />
order by a.st_id;</p>
<p>ST_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AGE TOL_SCORE SKILL<br />
-------------------- ---------- --------- --------- ------------------&nbsp; --<br />
973231&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wangbindu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 501&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 篮球<br />
973232&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zhuzhijing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 538<br />
973233&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gaojing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 576&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 足球</p>
<p>1.3自我连接<br />
自我连接是在同一个表或视图内进行条件连接.<br />
[例]自我连接实例<br />
查询每个雇员的名字和该雇员的经理的名字:<br />
SQL&gt; select e1.ename||'&nbsp;&nbsp; work for&nbsp;&nbsp; '||e2.ename "Employees and their Managers"<br />
&nbsp; 2&nbsp; from&nbsp; scott.emp e1,scott.emp e2 where e1.mgr=e2.empno;</p>
<p>Employees and their Managers<br />
-------------------------------------------------<br />
SMITH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; FORD<br />
ALLEN&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; BLAKE<br />
WARD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; BLAKE<br />
JONES&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; KING<br />
MARTIN&nbsp;&nbsp; work for&nbsp;&nbsp; BLAKE<br />
BLAKE&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; KING<br />
CLARK&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; KING<br />
SCOTT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; JONES<br />
TURNER&nbsp; work for&nbsp;&nbsp; BLAKE<br />
ADAMS&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; SCOTT<br />
JAMES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; BLAKE<br />
FORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; JONES<br />
MILLER&nbsp;&nbsp;&nbsp;&nbsp; work for&nbsp;&nbsp; CLARK</p>
<p>1.4UNION , INTERSECT及 MINUS<br />
UNION:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以将两个以上的表的相类似的查询结果放在一起 (union all则表示返回所有的行)<br />
具体语法:<br />
select ...<br />
union[all]<br />
select...<br />
==========</p>
<p>INTERSECT:&nbsp; 返回两个表中相同的信息<br />
具体语法:<br />
select ...<br />
intersect<br />
select...<br />
==========</p>
<p>MINUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp; 返回一个表中出现的信息<br />
具体语法:<br />
select ...<br />
minus<br />
select...<br />
[例1]UNION操作实例<br />
SQL&gt; select&nbsp; st_id&nbsp; from students <br />
&nbsp; 2&nbsp; union <br />
&nbsp; 3&nbsp; select&nbsp; st_id&nbsp; from student_skill;</p>
<p>ST_ID<br />
--------------------<br />
973231<br />
973232<br />
973233</p>
<p>[例2]INTERSECT操作实例<br />
列出有特长的学生的学号<br />
SQL&gt; select st_id from students<br />
&nbsp; 2&nbsp; intersect<br />
&nbsp; 3&nbsp; select st_id from student_skill;<br />
ST_ID<br />
--------------------<br />
973231<br />
973233</p>
<p>[例3]MINUS操作实例<br />
列出没有特长学生的学号<br />
select st_id from students<br />
minus<br />
select st_id from student_skill;<br />
ST_ID<br />
--------------------<br />
973232</p>
<p><br />
2.创建复杂的视图<br />
许多应用系统有统计等功能,建议最好把这些复杂语句写成视图.下面是几个常用的视图.<br />
2.1分组视图<br />
[例1]简单的分组视图<br />
SQL&gt; create or replace view dept_tot as <br />
&nbsp; 2&nbsp; select a.dname dept,sum(b.sal) total_sal from scott.dept a,scott.emp b <br />
&nbsp; 3&nbsp; where a.deptno=b.deptno group by a.dname;</p>
<p>查看已建立。<br />
SQL&gt; select * from dept_tot;</p>
<p>DEPT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOTAL_SAL<br />
--------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---------<br />
ACCOUNTING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8750<br />
RESEARCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10875<br />
SALES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9400</p>
<p>[例2]带复杂函数视图<br />
SQL&gt; create or replace view itemtot as<br />
&nbsp; 2&nbsp; select persion,sum(amount) itemtot from ledger<br />
&nbsp; 3&nbsp; where actiondate between <br />
&nbsp; 4&nbsp; to_date('01-MAR-1901','dd-mon-yyyy') and<br />
&nbsp; 5&nbsp; to_date('31-MAR-1901','dd-mon-yyyy')<br />
&nbsp; 6&nbsp; and action in('bought','raid') group by persion;</p>
<p>2.2合计视图<br />
[例]合计函数视图实例<br />
SQL&gt; create or replace view emp_no1&nbsp; as <br />
&nbsp; 2&nbsp; select deptno,sum(sal) 工资和,sum(comm) 总和<br />
&nbsp; 3&nbsp; from scott.emp group by deptno;<br />
SQL&gt; select * from emp_no1;<br />
DEPTNO&nbsp;&nbsp;&nbsp; 工资和&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 总和<br />
--------- --------- ---------<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8750<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20&nbsp;&nbsp;&nbsp;&nbsp; 10875<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2200</p>
<p>2.3组合视图<br />
[例]带组合函数的视图<br />
SQL&gt; create or replace view byitem as<br />
&nbsp; 2&nbsp; select l.persion persion.item, amount, 100*amount/item bypersion,100*amount/total bytotal<br />
&nbsp; 3&nbsp; from ledgent l,itemtotal i,total where l.persion=i.persion where l.persion=i.persion<br />
&nbsp; 4&nbsp; and actiondate between<br />
&nbsp; 5&nbsp; to_date('01-MAR-1901','dd-mon-yyyy') and<br />
&nbsp; 6&nbsp; to_date('31-MAR-1901','dd-mon-yyyy')<br />
&nbsp; 7&nbsp;&nbsp; and action in('bought','raid') ;</p>
<p>3.家族树<br />
语法:<br />
select column from table_name start with column=value<br />
connect by prior 父主键=子主键</p>
<p>3.1排除单一性和分枝<br />
以ORACLE中的EMP表为例<br />
[例]从顶到底列出各雇员的信息<br />
SQL&gt; select lpad(' ',4*(level-1))||ename name,empno,mgr from emp start with mgr is null<br />
&nbsp; 2&nbsp; connect by prior empno=mgr;</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EMPNO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MGR<br />
---------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---------<br />
KING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; JONES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7566&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SCOTT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7788&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7566<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADAMS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7876&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7788</p>
<p>3.2遍历至根<br />
[例1]现在要从某个雇员开始向他的上级列出该雇员的层次结构<br />
SQL&gt; col ename for a30;<br />
SQL&gt; select lpad(' ',4*(level-1))||ename ename,mgr,empno from scott.emp <br />
&nbsp; 2&nbsp; start with mgr=7788 connect by prior mgr=empno;<br />
ENAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MGR&nbsp;&nbsp;&nbsp;&nbsp; EMPNO<br />
------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---------&nbsp;&nbsp;&nbsp; ---------<br />
ADAMS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7788&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7876<br />
&nbsp;&nbsp;&nbsp; SCOTT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7566&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7788<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JONES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7566<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839</p>
<p>[例2]列出所有雇员的层次结构<br />
SQL&gt; select lpad(' ',4*(level-1))||ename ename,empno,mgr from scott.emp<br />
&nbsp; 2&nbsp; start with mgr is not null<br />
&nbsp; 3&nbsp; connect by empno=prior mgr;</p>
<p>ENAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EMPNO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MGR<br />
------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---------<br />
SMITH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7369&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7902<br />
&nbsp;&nbsp;&nbsp; FORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7902&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7566<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JONES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7566&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
ALLEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7499&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7698<br />
&nbsp;&nbsp;&nbsp; BLAKE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7698&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
WARD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7521&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7698<br />
&nbsp;&nbsp;&nbsp; BLAKE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7698&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
JONES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7566&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
&nbsp;&nbsp;&nbsp; KING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
MARTIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7654&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7698<br />
&nbsp;&nbsp;&nbsp; BLAKE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7698&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
BLAKE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7698&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
&nbsp;&nbsp;&nbsp; KING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
CLARK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7782&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
&nbsp;&nbsp;&nbsp; KING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839<br />
SCOTT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7788&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7566<br />
&nbsp;&nbsp;&nbsp; JONES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7566&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7839</p>
<img src ="http://www.blogjava.net/jelver/aggbug/172295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2008-01-02 19:38 <a href="http://www.blogjava.net/jelver/articles/172295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>单表级联查询优化</title><link>http://www.blogjava.net/jelver/articles/169998.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Mon, 24 Dec 2007 03:35:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/169998.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/169998.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/169998.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/169998.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/169998.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">优化前的糟糕语句<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;t.userid&nbsp;,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">count</span><span style="color: #000000">(</span><span style="color: #808080">*</span><span style="color: #000000">)&nbsp;&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;snsjob.mxt_temp_lxw_voice_info&nbsp;m&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;&nbsp;m.statename</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">广东</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;m.userid</span><span style="color: #808080">=</span><span style="color: #000000">t.userid&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;totals,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">count</span><span style="color: #000000">(</span><span style="color: #808080">*</span><span style="color: #000000">)&nbsp;&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;snsjob.mxt_temp_lxw_voice_info&nbsp;m&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;&nbsp;m.statename</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">广东</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;m.userid</span><span style="color: #808080">=</span><span style="color: #000000">t.userid&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;m.isvalid&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;)&nbsp;uncheck,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">count</span><span style="color: #000000">(</span><span style="color: #808080">*</span><span style="color: #000000">)&nbsp;&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;snsjob.mxt_temp_lxw_voice_info&nbsp;n&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;&nbsp;m.statename</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">广东</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;n.userid</span><span style="color: #808080">=</span><span style="color: #000000">t.userid&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;&nbsp;n.isvalid&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;&nbsp;)&nbsp;checkedpass&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;snsjob.mxt_temp_lxw_voice_info&nbsp;t&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">group</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">by</span><span style="color: #000000">&nbsp;t.userid&nbsp;</span><span style="color: #0000ff">order</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">by</span><span style="color: #000000">&nbsp;checkedpass&nbsp;</span><span style="color: #0000ff">desc</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />优化后如下<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;t.userid,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff00ff">count</span><span style="color: #000000">(</span><span style="color: #808080">*</span><span style="color: #000000">),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff00ff">sum</span><span style="color: #000000">(</span><span style="color: #ff00ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">when</span><span style="color: #000000">&nbsp;&nbsp;isvalid&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">then</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000">&nbsp;),<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff00ff">sum</span><span style="color: #000000">(</span><span style="color: #ff00ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">when</span><span style="color: #000000">&nbsp;&nbsp;isvalid&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">then</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000">&nbsp;)&nbsp;checkedpass<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;snsjob.mxt_temp_lxw_voice_info&nbsp;t&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;statename</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">广东</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">group</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">by</span><span style="color: #000000">&nbsp;t.useridby&nbsp;checkedpass&nbsp;</span><span style="color: #0000ff">desc</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">order</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />速度快20倍以上，数据越多越明显</span></div>
<img src ="http://www.blogjava.net/jelver/aggbug/169998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2007-12-24 11:35 <a href="http://www.blogjava.net/jelver/articles/169998.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>教你自动恢复MySQL数据库的日志文件</title><link>http://www.blogjava.net/jelver/articles/166231.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Sat, 08 Dec 2007 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/166231.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/166231.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/166231.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/166231.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/166231.html</trackback:ping><description><![CDATA[<span class="tpc_content"><br />
如果MySQL服务器启用了二进制日志，你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如，从你最后一次备份)直到现在或另一个指定的时间点的数据。&#8220;mysqlbinlog：用于处理二进制日志文件的实用工具&#8221;。 <br />
<br />
要想从二进制日志恢复数据，你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(即my.cnf or my.ini，取决于你的系统)中找到路径。如果未包含在选项文件中，当服务器启动时，可以在命令行中以选项的形式给出。启用二进制日志的选项为--log-bin。要想确定当前的二进制日志文件的文件名，输入下面的MySQL语句： <br />
<br />
<br />
SHOW BINLOG EVENTS \G<br />
<br />
<br />
你还可以从命令行输入下面的内容： <br />
<br />
<br />
mysql --user=root -pmy_pwd -e 'SHOW BINLOG EVENTS \G'<br />
<br />
<br />
将密码my_pwd替换为服务器的root密码。 <br />
<br />
1. 指定恢复时间 <br />
<br />
对于MySQL 4.1.4，可以在mysqlbinlog语句中通过--start-date和--stop-date选项指定DATETIME格式的起止时间。举例说明，假设在今天上午10:00(今天是2006年4月20日)，执行SQL语句来删除一个大表。要想恢复表和数据，你可以恢复前晚上的备份，并输入： <br />
<br />
<br />
mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 \ <br />
&nbsp; | mysql -u root -pmypwd<br />
<br />
<br />
该命令将恢复截止到在--stop-date选项中以DATETIME格式给出的日期和时间的所有数据。如果你没有检测到几个小时后输入的错误的SQL语句，可能你想要恢复后面发生的活动。根据这些，你可以用起使日期和时间再次运行mysqlbinlog： <br />
<br />
<br />
mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456 \ <br />
&nbsp; | mysql -u root -pm