﻿<?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-sunfruit[www.sunfruit.org]-随笔分类-数据库</title><link>http://www.blogjava.net/sunfruit/category/7563.html</link><description>--我相信JAVA能走得更远 MSN:cuij7718@hotmail.com或sunfruit_cn@hotmail.com   QQ:316228067</description><language>zh-cn</language><lastBuildDate>Thu, 29 Nov 2007 18:34:29 GMT</lastBuildDate><pubDate>Thu, 29 Nov 2007 18:34:29 GMT</pubDate><ttl>60</ttl><item><title>Oracle10g Spatial(空间数据库参考) (10.2)</title><link>http://www.blogjava.net/sunfruit/archive/2007/10/19/154166.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Fri, 19 Oct 2007 04:55:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2007/10/19/154166.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/154166.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2007/10/19/154166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/154166.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/154166.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; --sunfruit<br />
<br />
&nbsp;&nbsp;&nbsp; Oracle&#174;&nbsp;Spatial<br />
&nbsp;&nbsp;&nbsp; User&#8217;s&nbsp;Guide&nbsp;and&nbsp;Reference<br />
&nbsp;&nbsp;&nbsp; 10g&nbsp;Release&nbsp;2&nbsp;(10.2)<br />
<br />
&nbsp;&nbsp;&nbsp; 非常好的Oracle10g&nbsp;Spatial(10.2)的指南和参考文档<br />
&nbsp;&nbsp;&nbsp; 英文的<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 目录有3部分20多个章节，这里只节选了第二章节的目录<br />
&nbsp;&nbsp;&nbsp; 2&nbsp;Spatial&nbsp;Data&nbsp;Types&nbsp;and&nbsp;Metadata<br />
&nbsp;&nbsp;&nbsp; 2.1&nbsp;Simple&nbsp;Example:&nbsp;Inserting,&nbsp;Indexing,&nbsp;and&nbsp;Querying&nbsp;Spatial&nbsp;Data.....&nbsp;2-1<br />
&nbsp;&nbsp;&nbsp; 2.2&nbsp;SDO_GEOMETRY&nbsp;Object&nbsp;Type&nbsp;......&nbsp;2-5<br />
&nbsp;&nbsp;&nbsp; 2.2.1&nbsp;SDO_GTYPE..........&nbsp;2-5<br />
&nbsp;&nbsp;&nbsp; 2.2.2&nbsp;SDO_SRID..........&nbsp;2-7<br />
&nbsp;&nbsp;&nbsp; 2.2.3&nbsp;SDO_POINT&nbsp;..........&nbsp;2-7<br />
&nbsp;&nbsp;&nbsp; 2.2.4&nbsp;SDO_ELEM_INFO.........&nbsp;2-7<br />
&nbsp;&nbsp;&nbsp; 2.2.5&nbsp;SDO_ORDINATES&nbsp;........&nbsp;2-10<br />
&nbsp;&nbsp;&nbsp; 2.2.6&nbsp;Usage&nbsp;Considerations&nbsp;.........&nbsp;2-11<br />
&nbsp;&nbsp;&nbsp; 2.3&nbsp;SDO_GEOMETRY&nbsp;Methods.........&nbsp;2-11<br />
&nbsp;&nbsp;&nbsp; 2.4&nbsp;SDO_GEOMETRY&nbsp;Constructors........&nbsp;2-13<br />
&nbsp;&nbsp;&nbsp; 2.5&nbsp;Geometry&nbsp;Examples........&nbsp;2-14<br />
&nbsp;&nbsp;&nbsp; 2.5.1&nbsp;Rectangle.........&nbsp;2-14<br />
&nbsp;&nbsp;&nbsp; 2.5.2&nbsp;Polygon&nbsp;with&nbsp;a&nbsp;Hole.........&nbsp;2-15<br />
&nbsp;&nbsp;&nbsp; 2.5.3&nbsp;Compound&nbsp;Line&nbsp;String&nbsp;.......&nbsp;2-17<br />
&nbsp;&nbsp;&nbsp; 2.5.4&nbsp;Compound&nbsp;Polygon&nbsp;.........&nbsp;2-19<br />
&nbsp;&nbsp;&nbsp; 2.5.5&nbsp;Point...........&nbsp;2-20<br />
&nbsp;&nbsp;&nbsp; 2.5.6&nbsp;Oriented&nbsp;Point&nbsp;..........&nbsp;2-21<br />
&nbsp;&nbsp;&nbsp; 2.5.7&nbsp;Type&nbsp;0&nbsp;(Zero)&nbsp;Element.........&nbsp;2-23<br />
&nbsp;&nbsp;&nbsp; 2.5.8&nbsp;Several&nbsp;Geometry&nbsp;Types........&nbsp;2-25<br />
&nbsp;&nbsp;&nbsp; 2.6&nbsp;Geometry&nbsp;Metadata&nbsp;Views&nbsp;........&nbsp;2-29<br />
&nbsp;&nbsp;&nbsp; 2.6.1&nbsp;TABLE_NAME.........&nbsp;2-30<br />
&nbsp;&nbsp;&nbsp; 2.6.2&nbsp;COLUMN_NAME.........&nbsp;2-30<br />
&nbsp;&nbsp;&nbsp; 2.6.3&nbsp;DIMINFO........&nbsp;2-30<br />
&nbsp;&nbsp;&nbsp; 2.6.4&nbsp;SRID...........&nbsp;2-31<br />
&nbsp;&nbsp;&nbsp; 2.7&nbsp;Spatial&nbsp;Index-Related&nbsp;Structures&nbsp;.......&nbsp;2-31<br />
&nbsp;&nbsp;&nbsp; 2.7.1&nbsp;Spatial&nbsp;Index&nbsp;Views&nbsp;.......&nbsp;2-31<br />
&nbsp;&nbsp;&nbsp; 2.7.1.1&nbsp;xxx_SDO_INDEX_INFO&nbsp;Views.......&nbsp;2-31<br />
&nbsp;&nbsp;&nbsp; 2.7.1.2&nbsp;xxx_SDO_INDEX_METADATA&nbsp;Views.....&nbsp;2-32<br />
&nbsp;&nbsp;&nbsp; 2.7.2&nbsp;Spatial&nbsp;Index&nbsp;Table&nbsp;Definition&nbsp;.......&nbsp;2-34<br />
&nbsp;&nbsp;&nbsp; 2.7.3&nbsp;R-Tree&nbsp;Index&nbsp;Sequence&nbsp;Object&nbsp;.......&nbsp;2-35<br />
&nbsp;&nbsp;&nbsp; 2.8&nbsp;Unit&nbsp;of&nbsp;Measurement&nbsp;Support&nbsp;........&nbsp;2-35<br />
<br />
&nbsp;&nbsp;&nbsp; 直接下载demo文件即可<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;下载地址:<a href="http://www.fruitres.cn/servlet/buyproductservlet?tag=single&amp;tag1=info&amp;PRODUCT_ID=1500381985&amp;number=0">http://www.fruitres.cn/servlet/buyproductservlet?tag=single&amp;tag1=info&amp;PRODUCT_ID=1500381985&amp;number=0</a><br />
&nbsp;&nbsp;&nbsp; 更多下载:<a href="http://www.fruitres.cn">http://www.fruitres.cn</a>
 <img src ="http://www.blogjava.net/sunfruit/aggbug/154166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2007-10-19 12:55 <a href="http://www.blogjava.net/sunfruit/archive/2007/10/19/154166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[SQL]Oracle正常SQL(2004年第1版)</title><link>http://www.blogjava.net/sunfruit/archive/2007/09/06/143064.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Thu, 06 Sep 2007 01:40:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2007/09/06/143064.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/143064.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2007/09/06/143064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/143064.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/143064.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; --sunfruit<br />
<br />
&nbsp;&nbsp;&nbsp; 该文档非常好的Oracle维护学习文档<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 文档目录如下<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 监控SQL<br />
&nbsp;&nbsp;&nbsp;&nbsp; 常用户用SQL<br />
&nbsp;&nbsp;&nbsp;&nbsp; 查询表结构<br />
&nbsp;&nbsp;&nbsp;&nbsp; 表空间使用状况<br />
&nbsp;&nbsp;&nbsp;&nbsp; 查询某个模式下面数据不为空的表<br />
&nbsp;&nbsp;&nbsp;&nbsp; 客户端主机信息<br />
&nbsp;&nbsp;&nbsp;&nbsp; 安装Oracle以后，经常使用的修改表空间的SQL代码<br />
&nbsp;&nbsp;&nbsp;&nbsp; 查看回滚段名称及大小<br />
&nbsp;&nbsp;&nbsp;&nbsp; PL/SQL入门教程<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在from后面使用变量<br />
&nbsp;&nbsp;&nbsp;&nbsp; Oracle常用数据字典<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在Oracle中实现数据库的复制<br />
&nbsp;&nbsp;&nbsp;&nbsp; SQL*PLUS环境输入'&amp;字符'的方法<br />
&nbsp;&nbsp;&nbsp;&nbsp; 简说创建用户<br />
&nbsp;&nbsp;&nbsp;&nbsp; 简说Oracle启动及关闭数据库实例<br />
&nbsp;&nbsp;&nbsp;&nbsp; 简说Oracle数据库导出(exp)/导入(imp)<br />
&nbsp;&nbsp;&nbsp;&nbsp; 实例:Oracle导出Excel文件<br />
&nbsp;&nbsp;&nbsp;&nbsp; 实例:Oracle导出HTM文件<br />
&nbsp;&nbsp;&nbsp;&nbsp; 查看数据库保留字<br />
&nbsp;&nbsp;&nbsp;&nbsp; 数据字典及某些字段意义<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载地址&nbsp;&nbsp;<a href="http://www.fruitres.cn/servlet/buyproductservlet?tag=single&amp;tag1=info&amp;PRODUCT_ID=244294537&amp;number=0">http://www.fruitres.cn/servlet/buyproductservlet?tag=single&amp;tag1=info&amp;PRODUCT_ID=244294537&amp;number=0</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 更多资料&nbsp;&nbsp;<a href="http://www.fruitres.cn/">http://www.fruitres.cn/</a> 
 <img src ="http://www.blogjava.net/sunfruit/aggbug/143064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2007-09-06 09:40 <a href="http://www.blogjava.net/sunfruit/archive/2007/09/06/143064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]Oracle表结构导出为HTML工具1.0.4</title><link>http://www.blogjava.net/sunfruit/archive/2007/07/19/131237.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Thu, 19 Jul 2007 03:41:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2007/07/19/131237.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/131237.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2007/07/19/131237.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/131237.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/131237.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; --sunfruit<br />
将Oracle表结构导出成Html页面的工具<br />
<br />
1.0.4<br />
增加了导出触发器、存储过程、函数的功能，并且修改了不能导出KEYS全部类型的BUG<br />
<br />
1.0.3<br />
增加了导出Sequences、View的功能，并且导出界面默认导出到安装文件夹中的export目录中<br />
<br />
1.0.2<br />
增加了导出KEYS、INDEX的功能<br />
<br />
1.0.1<br />
增加了导出完毕以后直接点击打开文件夹、打开文件的查看方式，并且支持Linux/Win&nbsp;平台<br />
<br />
1.0.0<br />
导出为html文件，导出完毕后直接查看index.html文件即可。导出的内容包括各个表的名称索引和注释以及表中各个字段的明细和注释 <br />
<br />
下载地址&nbsp;<a href="http://www.fruitres.cn/servlet/buyproductservlet?tag=single&amp;tag1=info&amp;PRODUCT_ID=942025602&amp;number=0">http://www.fruitres.cn/servlet/buyproductservlet?tag=single&amp;tag1=info&amp;PRODUCT_ID=942025602&amp;number=0</a>&nbsp;下载版本1.0.4<br />
更多工具和文档请到 <a href="http://www.fruitres.cn/">http://www.fruitres.cn/</a> 
  <img src ="http://www.blogjava.net/sunfruit/aggbug/131237.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2007-07-19 11:41 <a href="http://www.blogjava.net/sunfruit/archive/2007/07/19/131237.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle Spatial建立过程</title><link>http://www.blogjava.net/sunfruit/archive/2006/07/25/59933.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Tue, 25 Jul 2006 02:31:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2006/07/25/59933.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/59933.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2006/07/25/59933.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/59933.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/59933.html</trackback:ping><description><![CDATA[
		<p>--sunfruit<br /><br />空间数据库Oracle Spatial的建立过程如下：<br /><br />-- 创建最基本的个人兴趣点表结构<br />drop table poi;<br />create table poi (gid INTEGER,<br />  opid INTEGER,<br />  gname VARCHAR2(256),<br />  gshape MDSYS.SDO_GEOMETRY);</p>
		<p>-- 更新用户空间数据对象视图(建立索引依赖她)<br />delete from USER_SDO_GEOM_METADATA where TABLE_NAME='POI' and COLUMN_NAME='GSHAPE';<br />insert into USER_SDO_GEOM_METADATA values ('poi',<br />     'gshape',<br />     MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('lon', -- lontitude<br />          -64800000, -- min(china 26430867 73.41907434101486)<br />          64800000, -- max(china 49679991 137.99997381765377)<br />          1),  -- scale (china abs 23249124)<br />       MDSYS.SDO_DIM_ELEMENT('lat',  -- latitude<br />          -32400000, -- min(china -1677502 -4.6597267116858045)<br />          32400000, -- max(china 21571819 59.92171939467364)<br />          1)),  -- scale (china abs 23249321)<br />     NULL);</p>
		<p>-- 插入一个个人兴趣点的SQL语句，使用标准点地物空间数据类型<br />delete from POI;<br />insert into POI values (20010001,<br />   1,<br />   '我的家',<br />   MDSYS.SDO_GEOMETRY(2001, -- SDO_GTYPE<br />     NULL,  -- SDO_SRID<br />     SDO_POINT_TYPE(41884696, 14377039, NULL), NULL, NULL));</p>
		<p>-- 插入一个个人兴趣点的SQL语句，使用另一种点地物空间数据组织结构<br />delete from POI;<br />insert into POI values (20010001,<br />   1,<br />   '我的家',<br />   MDSYS.SDO_GEOMETRY(2001, -- SDO_GTYPE<br />     NULL,  -- SDO_SRID<br />     NULL,  -- SDO_POINT<br />     MDSYS.SDO_ELEM_INFO_ARRAY (1, -- SDO_STARTING_OFFSET<br />        1, -- SDO_ETYPE<br />        1), -- SDO_INTERPRETATION<br />     MDSYS.SDO_ORDINATE_ARRAY (41884696,14377039)));</p>
		<p>-- 创建缺省的R-tree空间索引<br />drop index POI_IDX;<br />CREATE INDEX POI_IDX on poi(gshape)<br /> INDEXTYPE is MDSYS.SPATIAL_INDEX;<br />-- PARAMETERS('SDO_LEVEL=10000'); -- 180*60*60*1000*2/100/100*90*60*60*1000*2/100/100 = 8398080000</p>
		<p>-- 索引粗滤矩形窗口选择SQL语句(对于点地物对象，索引粗滤的结果是精确的)<br />SELECT * FROM POI P<br /> WHERE sdo_filter(P.gshape,<br />  mdsys.sdo_geometry(2003,NULL,NULL,<br />    mdsys.sdo_elem_info_array(1,1003,3),<br />    mdsys.sdo_ordinate_array(41883696,14376039, 41885696,14378039)),<br />  'querytype=window') = 'TRUE';</p>
		<p>-- 精确匹配矩形窗口选择SQL语句(计算非常耗时)<br />SELECT * FROM POI P<br /> WHERE sdo_relate(P.gshape,<br />  mdsys.sdo_geometry(2003,NULL,NULL,<br />    mdsys.sdo_elem_info_array(1,1003,3),<br />    mdsys.sdo_ordinate_array(41883696,14376039, 41885696,14378039)),<br />  'mask=INSIDE querytype=window') = 'TRUE';</p>
		<p> </p>
<img src ="http://www.blogjava.net/sunfruit/aggbug/59933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2006-07-25 10:31 <a href="http://www.blogjava.net/sunfruit/archive/2006/07/25/59933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]Oracle Spatial新驱动的查询记录实例</title><link>http://www.blogjava.net/sunfruit/archive/2006/07/20/59202.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Thu, 20 Jul 2006 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2006/07/20/59202.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/59202.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2006/07/20/59202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/59202.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/59202.html</trackback:ping><description><![CDATA[
		<p>--sunfruit<br />    Oracle的空间数据库的操作驱动更新了，新的驱动适用于Oracle8.0或以上，新驱动在对数据库的操作上面和原有的驱动差别比较大，不过有一点：使用变得简单了<br />    建立空间数据库和建立空间索引的步骤就略过了，那些网上有很多例子，而且实现方式上面也没有变化，下面列出查询空间数据库记录的代码：<br /><br />import java.sql.DriverManager;<br />import java.sql.ResultSet;<br />import java.sql.SQLException;<br />import oracle.spatial.geometry.JGeometry;<br />import java.sql.PreparedStatement;<br />import oracle.sql.STRUCT;<br />import java.sql.Connection;</p>
		<p>/**<br /> * &lt;p&gt;Title: &lt;/p&gt;<br /> *<br /> * &lt;p&gt;Description: &lt;/p&gt;<br /> *<br /> * &lt;p&gt;Copyright: Copyright (c) 2006&lt;/p&gt;<br /> *<br /> * &lt;p&gt;Company: &lt;/p&gt;<br /> *<br /> * @author sunfruit<br /> * @version 1.0<br /> */<br />public class SdoSelect {<br />  public SdoSelect() {<br />  }<br />  public static void main(String[] args) {<br />    String driver = "oracle.jdbc.driver.OracleDriver";<br />    String url = "jdbc:oracle:thin:@172.16.75.200:1521:starmap";<br />    String uid = "hmbst";<br />    String psw = "hmbst";<br />    Connection conn = null;<br />    PreparedStatement ps=null;<br />    try {<br />      Class.forName(driver);<br />      conn = DriverManager.getConnection(url, uid, psw);</p>
		<p>      JGeometry jGeometry=new JGeometry(41884696,14377039,42884696,14477039,0);<br />      STRUCT obj =jGeometry.store(jGeometry,conn);<br />      String sql = "SELECT * FROM POISDO p WHERE sdo_filter(p.gshape,?,'querytype=window')='TRUE'";<br />      ps = conn.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);<br />      ps.clearParameters();<br />      ps.setObject(1, obj);<br />      // 插入点地物记录<br />      ResultSet rs=ps.executeQuery();<br />      while(rs.next())<br />      {<br />        STRUCT st = (oracle.sql.STRUCT)rs.getObject("gshape");<br />        JGeometry j_geom = JGeometry.load(st);<br />        double[] dou=j_geom.getPoint();<br />        String buff="";<br />        for(int i=0;i&lt;dou.length;i++)<br />        {<br />          buff=buff+String.valueOf((int)dou[i])+"   ";<br />        }<br />        System.out.println(buff);<br />      }<br />    }<br />    catch (Exception ex) {<br />      ex.printStackTrace();<br />    }<br />    finally<br />    {<br />      if(conn!=null)<br />      {<br />        try {<br />          conn.close();<br />        }<br />        catch (SQLException ex) {<br />          ex.printStackTrace();<br />        }<br />      }<br />      if(ps!=null)<br />      {<br />        try {<br />          ps.close();<br />        }<br />        catch (SQLException ex) {<br />          ex.printStackTrace();<br />        }<br />      }</p>
		<p>    }<br />  }</p>
		<p>}<br /><br />表POISDO的结构如下<br />create table poi (<br />  id INTEGER,<br />  gname VARCHAR2(256),<br />  gshape MDSYS.SDO_GEOMETRY);</p>
<img src ="http://www.blogjava.net/sunfruit/aggbug/59202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2006-07-20 15:28 <a href="http://www.blogjava.net/sunfruit/archive/2006/07/20/59202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]Oracle Spatial新驱动的添加记录实例</title><link>http://www.blogjava.net/sunfruit/archive/2006/07/20/59198.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Thu, 20 Jul 2006 07:25:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2006/07/20/59198.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/59198.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2006/07/20/59198.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/59198.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/59198.html</trackback:ping><description><![CDATA[
		<p>    --sunfruit<br />    Oracle的空间数据库的操作驱动更新了，新的驱动适用于Oracle8.0或以上，新驱动在对数据库的操作上面和原有的驱动差别比较大，不过有一点：使用变得简单了<br />    建立空间数据库和建立空间索引的步骤就略过了，那些网上有很多例子，而且实现方式上面也没有变化，下面列出添加一条空间数据库记录的代码：<br /><br />import java.sql.*;<br />import oracle.sql.*;<br />import oracle.spatial.geometry.JGeometry;<br /><br />/**<br /> * &lt;p&gt;Title: &lt;/p&gt;<br /> *<br /> * &lt;p&gt;Description: &lt;/p&gt;<br /> *<br /> * &lt;p&gt;Copyright: Copyright (c) 2006&lt;/p&gt;<br /> *<br /> * &lt;p&gt;Company: &lt;/p&gt;<br /> *<br /> * @author not attributable<br /> * @version 1.0<br /> */<br />public class SdoAdd {<br />  public static void main(String[] args) {<br />    String driver = "oracle.jdbc.driver.OracleDriver";<br />    String url = "jdbc:oracle:thin:@172.16.75.200:1521:starmap";<br />    String uid = "hmbst";<br />    String psw = "hmbst";<br />    Connection conn = null;<br />    PreparedStatement ps=null;<br />    try {<br />      Class.forName(driver);<br />      conn = DriverManager.getConnection(url, uid, psw);<br />      <br />      JGeometry jGeometry=new JGeometry(41884696,14377039,0);<br />      STRUCT obj =jGeometry.store(jGeometry,conn);<br />      String sql =<br />          "insert into POISDO values(seq_poi_id.nextval,?,?)";<br />      ps = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);<br />      ps.clearParameters();<br />      ps.setString(1, "我的家");<br />      ps.setObject(2, obj);<br />      // 插入点地物记录<br />      ps.executeUpdate();<br />      conn.commit();<br />    }<br />    catch (Exception ex) {<br />      ex.printStackTrace();<br />    }<br />    finally<br />    {<br />      if(conn!=null)<br />      {<br />        try {<br />          conn.close();<br />        }<br />        catch (SQLException ex) {<br />          ex.printStackTrace();<br />        }<br />      }<br />      if(ps!=null)<br />      {<br />        try {<br />          ps.close();<br />        }<br />        catch (SQLException ex) {<br />          ex.printStackTrace();<br />        }<br />      }</p>
		<p>    }<br />  }<br />}<br /><br />表POISDO的结构如下<br />create table poi (<br />  id INTEGER,<br />  gname VARCHAR2(256),<br />  gshape MDSYS.SDO_GEOMETRY);</p>
<img src ="http://www.blogjava.net/sunfruit/aggbug/59198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2006-07-20 15:25 <a href="http://www.blogjava.net/sunfruit/archive/2006/07/20/59198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle Spatial详解</title><link>http://www.blogjava.net/sunfruit/archive/2006/07/19/58993.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Wed, 19 Jul 2006 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2006/07/19/58993.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/58993.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2006/07/19/58993.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/58993.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/58993.html</trackback:ping><description><![CDATA[
		<p>
				<strong>Step1. 创建一张表，其中shape用来存放空间数据</strong>
				<br />
				<font face="Courier New" color="#003366">CREATE TABLE mylake (<br />    feature_id NUMBER PRIMARY KEY,<br />    name VARCHAR2(32),<br />    <strong>shape MDSYS.SDO_GEOMETRY</strong>);</font>
		</p>
		<p>
				<font face="Courier New">
						<font color="#003366">
								<font color="#000000">
										<strong>Step2. 在<font color="#003366">user_sdo_geom_metadata</font></strong>
								</font>
								<font color="#000000">
										<strong>表中插入新记录，用于描述空间字段<br /></strong>
								</font>
								<font color="#003366">INSERT INTO user_sdo_geom_metadata VALUES (<br />    'mylake',    <font color="#000000">//---表名<br /></font>    'shape',    <font color="#000000">//---字段名<br /></font>    MDSYS.SDO_DIM_ARRAY(   <br />        MDSYS.SDO_DIM_ELEMENT('X', 0, 100, 0.05),    <font color="#000000">//---X维最小，最大值和容忍度。<br /></font>        MDSYS.SDO_DIM_ELEMENT('Y', 0, 100, 0.05)    <font color="#000000">//---Y维最小，最大值和容忍度<br /></font>    ),<br />    NULL    <font color="#000000">//---坐标系，缺省为笛卡尔坐标系</font><br />);</font>
						</font>
				</font>
		</p>
		<p>
				<font face="Courier New">
						<font color="#003366">
								<font color="#003366">
										<font color="#000000">
												<strong>Step3. 创建空间索引</strong>
												<br />
										</font>
										<font color="#003366">CREATE INDEX mylake_idx ON mylake(shape) <br />    INDEXTYPE IS MDSYS.SPATIAL_INDEX<br /></font>
								</font>
						</font>
				</font>
		</p>
		<p>
				<strong>Step4. 插入空间数据<br /></strong>Oracle Spatial用<code><font color="#003366">MDSYS.SDO_GEOMETRY</font></code>来存储空间数据,定义为：<code><font face="Courier New" color="#003366">CREATE TYPE sdo_geometry AS OBJECT (<br />    SDO_GTYPE NUMBER,<br />    SDO_SRID NUMBER,<br />    SDO_POINT SDO_POINT_TYPE,<br />    SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY,<br />    SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY);<br />SDO_GTYPE：<font color="#000000">用四个数字定义了所有的形状<br /></font><font color="#003366">            <font color="#000000">第一位:维数<br /></font>            <font color="#000000">第二位:线性表示。用于3，4维数据，二维为0<br /><font color="#003366">            </font><font color="#000000">最后两位:</font><table cellspacing="0" cellpadding="2" border="1"><tbody><tr><th>Value</th><th>Geometry</th><th>Description</th></tr><tr valign="top"><td>00</td><td><code><font color="#003366">UNKNOWN_GEOMETRY</font></code></td><td>Spatial ignores this value</td></tr><tr valign="top"><td>01</td><td><code><font color="#003366">POINT</font></code></td><td>A single point element</td></tr><tr valign="top"><td>02</td><td><font size="+0"><code><font color="#003366">LINE</font></code> or <code><font color="#003366">CURVE</font></code></font></td><td>Contains one line string element that may be linear, curved or both</td></tr><tr valign="top"><td>03</td><td><code><font color="#003366">POLYGON</font></code></td><td>Contains one polygon element with or without other polygon elements in it</td></tr><tr valign="top"><td>04</td><td><code><font color="#003366">COLLECTION</font></code></td><td>A heterogeneous collection of elements</td></tr><tr valign="top"><td>05</td><td><code><font color="#003366">MULTIPOINT</font></code></td><td>Contains one or more points</td></tr><tr valign="top"><td>06</td><td><font size="+0"><code><font color="#003366">MULTILINE</font></code> or <code><font color="#003366">MULTICURVE</font></code></font></td><td>Contains one or more line string elements</td></tr><tr valign="top"><td>07</td><td><code><font color="#003366">MULTIPOLYGON</font></code></td><td>Contains multiple polygon elements that maybe disjoint</td></tr></tbody></table></font></font></font></code></p>
		<p>
				<font color="#003366">SDO_SRID：<font color="#000000">坐标系，NULL为笛卡尔坐标系。<br /></font>SDO_POINT：</font>Oracle Spatial也可定义单个的点，<font color="#003366">SDO_POINT</font>的定义:<br /><code><font color="#003366"><font face="Courier New">    CREATE TYPE sdo_point_type AS OBJECT (X NUMBER,Y NUMBER,Z NUMBER);<br /></font><font face="Courier New"><font color="#000000"><font color="#003366">    </font>如何是二维，Z为NULL。<br /></font><font color="#003366">SDO_ELEM_INFO：</font></font><font color="#000000"><font face="Courier New">每三个值描述一个<font color="#000000">元素。<br /><font color="#003366">                </font><font color="#000000">第一个值：第一个顶点在<font color="#003366">SDO_ORDINATES_ARR</font>开始位置<br /></font><font color="#003366">                </font><font color="#000000">第二个值：元素类型<br /><font color="#003366">                </font><font color="#000000">第三个值：顶点连接方式：1-通过直线连接，2-通过圆弧连接</font></font><br /><font color="#003366">    </font>定义为<br /></font></font><code><font face="Courier New" color="#003366"><code><font face="Courier New">    CREATE TYPE sdo_elem_info_array AS VARRAY (1048576) of NUMBER;<br /></font></code>SDO_ORDINATES：<font color="#000000">几何图形所有顶点列表。定义为<br /><code><font face="Courier New" color="#003366">    CREATE TYPE sdo_ordinate_array AS VARRAY (1048576) of NUMBER;<br /></font></code></font></font></code></font></font></code></p>
		<p>FONT color=#003366&gt;<font color="#003366"><font color="#000000"><font face="Courier New">// 插入包含一个岛屿的湖泊<br /></font><code><font face="Courier New" color="#003366">INSERT INTO mylake VALUES(<br />    10, <br />    'Lake Calhoun', <br />    MDSYS.SDO_GEOMETRY(<br />        2003,<br />        NULL,<br />        NULL,<br />        MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1),<br />        MDSYS.SDO_ORDINATE_ARRAY(0,0, 10,0, 10,10, 0,10, 0,0, 4,4, 6,4, 6,6, 4,6, 4,4)<br />    ));</font></code></font></font></p>
		<p>
				<font color="#000000">
						<font face="Courier New">// 插入两艘小船<br /></font>
						<code>
								<font face="Courier New" color="#003366">INSERT INTO mylake VALUES(<br />    11, <br />    'The Windswept', <br />    MDSYS.SDO_GEOMETRY(<br />        2003,<br />        NULL,<br />        NULL,<br />        MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),<br />        MDSYS.SDO_ORDINATE_ARRAY(2,2, 3,2, 3,2, 2,3, 2,2)<br />    )<br />);<br /><br />INSERT INTO mylake VALUES(<br />    12, <br />    'Blue Crest', <br />    MDSYS.SDO_GEOMETRY(<br />        2003,<br />        NULL,<br />        NULL,<br />        MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),<br />        MDSYS.SDO_ORDINATE_ARRAY(7,7, 8,7, 8,7, 7,8, 7,7)<br />    )<br />);</font>
						</code>
				</font>
		</p>
		<p>
				<font face="Courier New">
						<strong>Step4. 查询<br /></strong>Oracle Spatial查询数据包括二个处理过程：<br />1.只通过索引查询候选项。通过函数<font color="#003366">SDO_FILTER</font>实现：<br /></font>
				<font color="#003366">
						<font face="Courier New">
								<code>SDO_FILTER(geometry1 MDSYS.SDO_GEOMETRY, geometry2 MDSYS.SDO_GEOMETRY, params VARCHAR2)<br /></code>geometry1：</font>
				</font>必须是被索引的几何数据<br /><font face="Courier New" color="#003366">geometry2：</font>不一定是表中的空间字段，也不要求被索引<br /><font face="新宋体" color="#003366">params：</font>Filter类型<br /><font face="Courier New" color="#003366">        querytype=WINDOW：</font>geometry2不要求来自表<br /><font face="Courier New" color="#003366">        querytype=JOIN</font>：geometry2必须来自表</p>
		<p>
				<font face="Courier New" color="#003366">SELECT name boat_name<br />FROM mylake t<br />WHERE feature_id = 12<br />AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,<br />    mdsys.sdo_elem_info_array(1,1003,1),<br />    mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),<br />    'querytype=WINDOW') = 'TRUE';</font>
				<br />
				<br />
				<font face="Courier New">2.再检查每个候选项是否和条件精确匹配。通过函数<font color="#003366">SDO_RELATE</font><font color="#000000">实现：<br /></font><font color="#003366">SDO_RELATE(geometry1 MDSYS.SDO_GEOMETRY, geometry2 MDSYS.SDO_GEOMETRY, params VARCHAR2)<br /><font face="新宋体">params：</font></font><font color="#000000">masktype类型</font></font>
		</p>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">DISJOINT</font>
						</code> — the boundaries and interiors do not intersect </font>
		</li>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">TOUCH</font>
						</code> — the boundaries intersect but the interiors do not intersect </font>
		</li>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">OVERLAPBDYDISJOINT</font>
						</code> — the interior of one object intersects the boundary and interior of the other object, but the two boundaries do not intersect. This relationship occurs, for example, when a line originates outside a polygon and ends inside that polygon. </font>
		</li>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">OVERLAPBDYINTERSECT</font>
						</code> — the boundaries and interiors of the two objects intersect </font>
		</li>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">EQUAL</font>
						</code> — the two objects have the same boundary and interior </font>
		</li>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">CONTAINS</font>
						</code> — the interior and boundary of one object is completely contained in the interior of the other object </font>
		</li>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">COVERS</font>
						</code> — the interior of one object is completely contained in the interior of the other object and their boundaries intersect </font>
		</li>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">INSIDE</font>
						</code> — the opposite of <code><font color="#003366">CONTAINS</font></code>. <code><font color="#003366">A INSIDE B</font></code> implies <code><font color="#003366">B CONTAINS A</font></code>. </font>
		</li>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">COVEREDBY</font>
						</code> — the opposite of <code><font color="#003366">COVERS</font></code>. <code><font color="#003366">A COVEREDBY B</font></code> implies <code><font color="#003366">B COVERS A</font></code>. </font>
		</li>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">ON</font>
						</code> — the interior and boundary of one object is on the boundary of the other object (and the second object covers the first object). This relationship occurs, for example, when a line is on the boundary of a polygon. </font>
		</li>
		<li>
				<font face="Courier New">
						<code>
								<font color="#003366">ANYINTERACT</font>
						</code> — the objects are non-disjoint. </font>
				<p>// 选择在定义矩形内的所有小船<code><font face="Courier New" color="#003366"><br />SELECT name boat_name<br />FROM mylake t<br />WHERE feature_id = 12<br />AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,<br />    mdsys.sdo_elem_info_array(1,1003,1),<br />    mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),<br />    'querytype=WINDOW') = 'TRUE'<br />AND SDO_RELATE(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,<br />    mdsys.sdo_elem_info_array(1,1003,1),<br />    mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),<br />    'masktype=INSIDE querytype=WINDOW') = 'TRUE'</font></code></p>
				<p>// masktype可联合使用<br /><code><font face="Courier New" color="#003366">SELECT feature_id id<br />FROM mylake t<br />WHERE feature_id = 12<br />AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,<br />    mdsys.sdo_elem_info_array(1,1003,1),<br />    mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),<br />    'querytype=WINDOW') = 'TRUE'<br />AND SDO_RELATE(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,<br />    mdsys.sdo_elem_info_array(1,1003,1),<br />    mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),<br />    'masktype=INSIDE+TOUCH querytype=WINDOW') = 'TRUE'</font></code></p>
				<p>
						<code>
								<font face="Courier New">Oracle Spatial 提供的其他查询函数：<br /><table cellspacing="0" cellpadding="2" border="1"><tbody><tr><td><b>Query</b></td><td><b>Description</b></td></tr><tr><td><code><font face="Courier New" color="#003366">SDO_NN</font></code></td><td>Nearest neighbor</td></tr><tr><td><code><font face="Courier New" color="#003366">SDO_SDO_WITHIN_DISTANCE</font></code></td><td>All geometries with a certain distance</td></tr><tr><td colspan="2"></td></tr><tr><td><b>Functions</b></td><td><b>Description</b></td></tr><tr><td><code><font face="Courier New" color="#003366">SDO_GEOM.SDO_MBR</font></code></td><td>The minimum bounding rectangle for a geometry</td></tr><tr><td><code><font face="Courier New" color="#003366">SDO_GEOM.SDO_DISTANCE</font></code></td><td>The distance between two geometries</td></tr><tr><td><code><font face="Courier New" color="#003366">SDO_GEOM.SDO_INTERSECTION</font></code></td><td>Provides the intersection point of two geometries</td></tr></tbody></table></font>
						</code>
				</p>
		</li>
<img src ="http://www.blogjava.net/sunfruit/aggbug/58993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2006-07-19 15:21 <a href="http://www.blogjava.net/sunfruit/archive/2006/07/19/58993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA调用返回结果集的存储过程--Sql 2000</title><link>http://www.blogjava.net/sunfruit/archive/2006/06/15/52916.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Thu, 15 Jun 2006 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2006/06/15/52916.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/52916.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2006/06/15/52916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/52916.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/52916.html</trackback:ping><description><![CDATA[
		<p>  --sunfruit<br /><br />建立存储过程如下，注意这个存储过程建立的时候，不需要像Oracle那样建立返回的游标<br />开始在Sql 2000按照Oracle那样建立了返回的游标[Sql 2000 的帮助里面也是建立返回的游标的]，但是调用总是不成功，后来使用了没有返回游标的存储过程，并且修改了调用存储过程的方式就可以了：<br />CREATE PROCEDURE PROC_WARE_INFO_STAT<br />               @XX_ID bigint</p>
		<p>AS<br />   SELECT * FROM TableName where colname=XX_ID<br />GO<br /><br />在调用的时候和Oracle有明显的不同，如下：<br /><br />Connection connection=xxxxxx;<br />CallableStatement callableStatement = connection.prepareCall("{call PROC_WARE_INFO_STAT(?) }");<br />callableStatement.setInt(1,100);<br />callableStatement.executeQuery();<br />ResultSet rs = callableStatement.getResultSet();</p>
<img src ="http://www.blogjava.net/sunfruit/aggbug/52916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2006-06-15 09:44 <a href="http://www.blogjava.net/sunfruit/archive/2006/06/15/52916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA调用返回结果集的存储过程--Oracle</title><link>http://www.blogjava.net/sunfruit/archive/2006/06/15/52911.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Thu, 15 Jun 2006 01:36:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2006/06/15/52911.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/52911.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2006/06/15/52911.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/52911.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/52911.html</trackback:ping><description><![CDATA[
		<p>  --sunfruit<br /><br />建立存储过程，存储过程为：</p>
		<p>CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS </p>
		<p>BEGIN</p>
		<p>    OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB;</p>
		<p>END TESTC;<br /><br />可以看到，它是把游标（可以理解为一个指针），作为一个out 参数来返回值的。</p>
		<p>在java里调用时就用下面的代码：</p>
		<p>package com.hyq.src;</p>
		<p>import java.sql.*;</p>
		<p>import java.io.OutputStream;</p>
		<p>import java.io.Writer;</p>
		<p>import java.sql.PreparedStatement;</p>
		<p>import java.sql.ResultSet;</p>
		<p>import oracle.jdbc.driver.*;</p>
		<p>public class TestProcedureTHREE {</p>
		<p>  public TestProcedureTHREE() {</p>
		<p>  }</p>
		<p>  public static void main(String[] args ){</p>
		<p>    String driver = "oracle.jdbc.driver.OracleDriver";</p>
		<p>    String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";</p>
		<p>    Statement stmt = null;</p>
		<p>    ResultSet rs = null;</p>
		<p>    Connection conn = null;</p>
		<p>    try {</p>
		<p>      Class.forName(driver);</p>
		<p>      conn =  DriverManager.getConnection(strUrl, "hyq", "hyq");</p>
		<p>      CallableStatement proc = null;</p>
		<p>      proc = conn.prepareCall("{ call hyq.testc(?) }");</p>
		<p>      proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);</p>
		<p>      proc.execute();</p>
		<p>      rs = (ResultSet)proc.getObject(1);</p>
		<p>      while(rs.next())</p>
		<p>      {</p>
		<p>          System.out.println("&lt;tr&gt;&lt;td&gt;" + rs.getString(1) + "&lt;/td&gt;&lt;td&gt;"+rs.getString(2)+"&lt;/td&gt;&lt;/tr&gt;");</p>
		<p>      }</p>
		<p>    }</p>
		<p>    catch (SQLException ex2) {</p>
		<p>      ex2.printStackTrace();</p>
		<p>    }</p>
		<p>    catch (Exception ex2) {</p>
		<p>      ex2.printStackTrace();</p>
		<p>    }</p>
		<p>    finally{</p>
		<p>      try {</p>
		<p>        if(rs != null){</p>
		<p>          rs.close();</p>
		<p>          if(stmt!=null){</p>
		<p>            stmt.close();</p>
		<p>          }</p>
		<p>          if(conn!=null){</p>
		<p>            conn.close();</p>
		<p>          }</p>
		<p>        }</p>
		<p>      }</p>
		<p>      catch (SQLException ex1) {</p>
		<p>      }</p>
		<p>    }</p>
		<p>  }</p>
		<p>}</p>
		<p>在这里要注意，在执行前一定要先把oracle的驱动包放到class路径里，否则会报错的。<br /></p>
<img src ="http://www.blogjava.net/sunfruit/aggbug/52911.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2006-06-15 09:36 <a href="http://www.blogjava.net/sunfruit/archive/2006/06/15/52911.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle优化你的查询--关于避免索引隐式失效</title><link>http://www.blogjava.net/sunfruit/archive/2006/02/19/31491.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Sun, 19 Feb 2006 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2006/02/19/31491.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/31491.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2006/02/19/31491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/31491.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/31491.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; --sunfruit 
<P>&nbsp;&nbsp;&nbsp; 说明了Oracle数据库中的索引隐式失效的问题</P>
<P>1、隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误.<BR>&nbsp;&nbsp;&nbsp;&nbsp;由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.<BR>&nbsp;&nbsp;&nbsp; 错误的例子：select * from test where tu_mdn=13333333333;<BR>&nbsp;&nbsp;&nbsp; 正确的例子：select * from test where tu_mdn='13333333333';<BR>&nbsp;&nbsp;&nbsp; <BR>2、对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+，-，*，/，! 等)<BR>&nbsp;&nbsp;&nbsp; 错误的例子：select * from test where id-1=9;<BR>&nbsp;&nbsp;&nbsp; 正确的例子：select * from test where id=10;<BR>&nbsp;&nbsp;&nbsp; <BR>3、使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引.<BR>&nbsp;&nbsp;&nbsp; 错误的例子：select * from test where round(id)=10; 说明，此时id的索引已经不起作用了<BR>&nbsp;&nbsp;&nbsp; 正确的例子：首先建立函数索引，create index test_id_fbi_idx on test(round(id));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后 select * from test where round(id)=10; 这时函数索引起作用了</P><img src ="http://www.blogjava.net/sunfruit/aggbug/31491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2006-02-19 17:26 <a href="http://www.blogjava.net/sunfruit/archive/2006/02/19/31491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle日期函数的一些总结</title><link>http://www.blogjava.net/sunfruit/archive/2006/02/19/31489.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Sun, 19 Feb 2006 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/sunfruit/archive/2006/02/19/31489.html</guid><wfw:comment>http://www.blogjava.net/sunfruit/comments/31489.html</wfw:comment><comments>http://www.blogjava.net/sunfruit/archive/2006/02/19/31489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunfruit/comments/commentRss/31489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunfruit/services/trackbacks/31489.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; --sunfruit 
<P>&nbsp;&nbsp;&nbsp; 总结了Oracle中关于日期函数的一些用法和技巧</P>
<P>上月末天：<BR>SQL&gt; select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from<BR>&nbsp; 2&nbsp; dual<BR>&nbsp; 3&nbsp; ;<BR>&nbsp;<BR>LASTDAY<BR>----------<BR>2004-09-30<BR>&nbsp;<BR>上月今天<BR>SQL&gt; select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual<BR>&nbsp; 2&nbsp; ;<BR>&nbsp;<BR>PRETODAY<BR>----------<BR>2004-09-29<BR>&nbsp;<BR>上月首天<BR>SQL&gt; select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') FirstDay<BR>&nbsp; 2&nbsp; from dual;<BR>&nbsp;<BR>FIRSTDAY<BR>----------<BR>2004-09-01<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>以下转贴：<BR>&nbsp;Oracle<BR>在日期使用上允许极大的灵活性。由于可以在日期字段存储时间和日期，从而有函数可以既引用日期又引用时间。<BR>Oracle 所提供的一些日期函数如下所示。<BR>1. SYSDATE<BR>返回当前的日期和时间。<BR>示例<BR>SELECT sysdate FROM dual;</P>
<P>SYSDATE<BR>----------<BR>05-3月 -03</P>
<P>2. ADD_MONTHS(d, no_of_month)<BR>当前日期"m"后推"no_of_month" 个月。参数"no_of_month"可为任何整数。<BR>示例<BR>SELECT add_months(sysdate,2) FROM dual;</P>
<P>ADD_MONTHS<BR>----------<BR>05-5月 -03</P>
<P>SELECT add_months(sysdate,-2) FROM dual;</P>
<P>ADD_MONTHS<BR>----------<BR>05-1月 -03</P>
<P>3. LAST_DAY(month_day)<BR>返回变量"month_day"中所指定月份的最后一天的日期。<BR>示例<BR>SELECT last_day(sysdate) FROM dual;</P>
<P>LAST_DAY(S<BR>----------<BR>31-3月 -03</P>
<P>4. MONTHS_BETWEEN(d1, d2)<BR>返回日期 d1 和 d2 之间的月份数。如果 d1 晚于 d2，结果为正，否则返回负数。<BR>示例<BR>SELECT months_between(sysdate,to_date('20030101','YYYYMMDD')) FROM dual;</P>
<P>MONTHS_BETWEEN(SYSDATE,TO_DATE('20030101','YYYYMMDD'))<BR>------------------------------------------------------<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; 2.15773932</P>
<P>5. NEXT_DAY(d, day_of_week)<BR>返回由"day_of_week"命名的，在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。<BR>示例<BR>-- 2003.3.2 是星期日<BR>SELECT next_day(to_date('20030226','YYYYMMDD'),1) FROM dual;</P>
<P>NEXT_DAY(T<BR>----------<BR>02-3月 -03</P>
<P>日期格式<BR>格式元素&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明<BR>AD 或 A.D.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 带有或不带有句号的 AD 标记<BR>BC 或 B.C.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 带有或不带有句号的 BC 标记<BR>D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一周中的天 (1-7)<BR>DAY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 天的名称 (Sunday - Saturday)<BR>DD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一月中的天 (1 - 31)<BR>DDD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一年中的天 (1 - 366)<BR>DY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 天的缩写 (Sun - Sat)<BR>HH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一天中的小时 (1 - 12)<BR>HH24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一天中的小时 (0 - 23)<BR>MI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分钟 (0-59)<BR>MM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 月 (01-12)<BR>MON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 月名称的缩写<BR>MONTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 月的名称<BR>SS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 秒 (0-59)<BR>YYYY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 个数字表示的年</P><img src ="http://www.blogjava.net/sunfruit/aggbug/31489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunfruit/" target="_blank">sunfruit</a> 2006-02-19 17:22 <a href="http://www.blogjava.net/sunfruit/archive/2006/02/19/31489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>