锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
Oracle® Spatial
User’s Guide and Reference
10g Release 2 (10.2)
闈炲父濂界殑Oracle10g Spatial(10.2)鐨勬寚鍗楀拰鍙傝冩枃妗?br />
鑻辨枃鐨?br />
鐩綍鏈?閮ㄥ垎20澶氫釜绔犺妭錛岃繖閲屽彧鑺傞変簡(jiǎn)絎簩绔犺妭鐨勭洰褰?br />
2 Spatial Data Types and Metadata
2.1 Simple Example: Inserting, Indexing, and Querying Spatial Data..... 2-1
2.2 SDO_GEOMETRY Object Type ...... 2-5
2.2.1 SDO_GTYPE.......... 2-5
2.2.2 SDO_SRID.......... 2-7
2.2.3 SDO_POINT .......... 2-7
2.2.4 SDO_ELEM_INFO......... 2-7
2.2.5 SDO_ORDINATES ........ 2-10
2.2.6 Usage Considerations ......... 2-11
2.3 SDO_GEOMETRY Methods......... 2-11
2.4 SDO_GEOMETRY Constructors........ 2-13
2.5 Geometry Examples........ 2-14
2.5.1 Rectangle......... 2-14
2.5.2 Polygon with a Hole......... 2-15
2.5.3 Compound Line String ....... 2-17
2.5.4 Compound Polygon ......... 2-19
2.5.5 Point........... 2-20
2.5.6 Oriented Point .......... 2-21
2.5.7 Type 0 (Zero) Element......... 2-23
2.5.8 Several Geometry Types........ 2-25
2.6 Geometry Metadata Views ........ 2-29
2.6.1 TABLE_NAME......... 2-30
2.6.2 COLUMN_NAME......... 2-30
2.6.3 DIMINFO........ 2-30
2.6.4 SRID........... 2-31
2.7 Spatial Index-Related Structures ....... 2-31
2.7.1 Spatial Index Views ....... 2-31
2.7.1.1 xxx_SDO_INDEX_INFO Views....... 2-31
2.7.1.2 xxx_SDO_INDEX_METADATA Views..... 2-32
2.7.2 Spatial Index Table Definition ....... 2-34
2.7.3 R-Tree Index Sequence Object ....... 2-35
2.8 Unit of Measurement Support ........ 2-35
鐩存帴涓嬭澆demo鏂囦歡鍗沖彲
涓嬭澆鍦板潃:http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=1500381985&number=0
鏇村涓嬭澆:http://www.fruitres.cn
]]>
璇ユ枃妗i潪甯稿ソ鐨凮racle緇存姢瀛︿範(fàn)鏂囨。
鏂囨。鐩綍濡備笅
鐩戞帶SQL
甯哥敤鎴風(fēng)敤SQL
鏌ヨ琛ㄧ粨鏋?br />
琛ㄧ┖闂翠嬌鐢ㄧ姸鍐?br />
鏌ヨ鏌愪釜妯″紡涓嬮潰鏁版嵁涓嶄負(fù)絀虹殑琛?br />
瀹㈡埛绔富鏈轟俊鎭?br />
瀹夎Oracle浠ュ悗錛岀粡甯鎬嬌鐢ㄧ殑淇敼琛ㄧ┖闂寸殑SQL浠g爜
鏌ョ湅鍥炴粴孌靛悕縐板強(qiáng)澶у皬
PL/SQL鍏ラ棬鏁欑▼
鍦╢rom鍚庨潰浣跨敤鍙橀噺
Oracle甯哥敤鏁版嵁瀛楀吀
鍦∣racle涓疄鐜版暟鎹簱鐨勫鍒?br />
SQL*PLUS鐜杈撳叆'&瀛楃'鐨勬柟娉?br />
綆璇村垱寤虹敤鎴?br />
綆璇碠racle鍚姩鍙?qiáng)鍏抽棴鏁版嵁搴撳疄渚?br />
綆璇碠racle鏁版嵁搴撳鍑?exp)/瀵煎叆(imp)
瀹炰緥:Oracle瀵煎嚭Excel鏂囦歡
瀹炰緥:Oracle瀵煎嚭HTM鏂囦歡
鏌ョ湅鏁版嵁搴撲繚鐣欏瓧
鏁版嵁瀛楀吀鍙?qiáng)鏌愪簺瀛棇D墊剰涔?br />
涓嬭澆鍦板潃 http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=244294537&number=0
鏇村璧勬枡 http://www.fruitres.cn/
]]>
1.0.4
澧炲姞浜?jiǎn)瀵煎國(guó)櫑﹀彂鍣ㄣ佸瓨鍌ㄨ繃紼嬨佸嚱鏁扮殑鍔熻兘錛屽茍涓斾慨鏀逛簡(jiǎn)涓嶈兘瀵煎嚭KEYS鍏ㄩ儴綾誨瀷鐨凚UG
1.0.3
澧炲姞浜?jiǎn)瀵煎嚭Sequences銆乂iew鐨勫姛鑳斤紝騫朵笖瀵煎嚭鐣岄潰榛樿瀵煎嚭鍒板畨瑁呮枃浠跺す涓殑export鐩綍涓?br />
1.0.2
澧炲姞浜?jiǎn)瀵煎嚭KEYS銆両NDEX鐨勫姛鑳?br />
1.0.1
澧炲姞浜?jiǎn)瀵煎嚭瀹屾瘯浠ュ悗鐩存帴鐐瑰嚴(yán)L墦寮鏂囦歡澶廣佹墦寮鏂囦歡鐨勬煡鐪嬫柟寮忥紝騫朵笖鏀寔Linux/Win 騫沖彴
1.0.0
瀵煎嚭涓篽tml鏂囦歡錛屽鍑哄畬姣曞悗鐩存帴鏌ョ湅index.html鏂囦歡鍗沖彲銆傚鍑虹殑鍐呭鍖呮嫭鍚勪釜琛ㄧ殑鍚嶇О绱㈠紩鍜屾敞閲婁互鍙?qiáng)琛ㄤ腑鍚勪釜瀛棇D電殑鏄庣粏鍜屾敞閲?
涓嬭澆鍦板潃 http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=942025602&number=0 涓嬭澆鐗堟湰1.0.4
鏇村宸ュ叿鍜屾枃妗h鍒?http://www.fruitres.cn/
]]>
絀洪棿鏁版嵁搴揙racle Spatial鐨勫緩绔嬭繃紼嬪涓嬶細(xì)
-- 鍒涘緩鏈鍩烘湰鐨勪釜浜哄叴瓚g偣琛ㄧ粨鏋?br />drop table poi;
create table poi (gid聽I(yíng)NTEGER,
聽聽opid聽I(yíng)NTEGER,
聽聽gname聽VARCHAR2(256),
聽聽gshape聽MDSYS.SDO_GEOMETRY);
-- 鏇存柊鐢ㄦ埛絀洪棿鏁版嵁瀵硅薄瑙嗗浘(寤虹珛绱㈠紩渚濊禆濂?
delete from USER_SDO_GEOM_METADATA where TABLE_NAME='POI' and COLUMN_NAME='GSHAPE';
insert into USER_SDO_GEOM_METADATA values ('poi',
聽聽聽聽聽'gshape',
聽聽聽聽聽MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('lon',聽-- lontitude
聽聽聽聽聽聽聽聽聽聽-64800000,聽-- min(china 26430867 73.41907434101486)
聽聽聽聽聽聽聽聽聽聽64800000,聽-- max(china 49679991 137.99997381765377)
聽聽聽聽聽聽聽聽聽聽1),聽聽-- scale (china abs 23249124)
聽聽聽聽聽聽聽MDSYS.SDO_DIM_ELEMENT('lat',聽聽-- latitude
聽聽聽聽聽聽聽聽聽聽-32400000,聽-- min(china -1677502 -4.6597267116858045)
聽聽聽聽聽聽聽聽聽聽32400000,聽-- max(china 21571819 59.92171939467364)
聽聽聽聽聽聽聽聽聽聽1)),聽聽-- scale (china abs 23249321)
聽聽聽聽聽NULL);
-- 鎻掑叆涓涓釜浜哄叴瓚g偣鐨凷QL璇彞錛屼嬌鐢ㄦ爣鍑嗙偣鍦扮墿絀洪棿鏁版嵁綾誨瀷
delete from POI;
insert into POI values (20010001,
聽聽聽1,
聽聽聽'鎴戠殑瀹?,
聽聽聽MDSYS.SDO_GEOMETRY(2001,聽-- SDO_GTYPE
聽聽聽聽聽NULL,聽聽-- SDO_SRID
聽聽聽聽聽SDO_POINT_TYPE(41884696, 14377039, NULL), NULL, NULL));
-- 鎻掑叆涓涓釜浜哄叴瓚g偣鐨凷QL璇彞錛屼嬌鐢ㄥ彟涓縐嶇偣鍦扮墿絀洪棿鏁版嵁緇勭粐緇撴瀯
delete from POI;
insert into POI values (20010001,
聽聽聽1,
聽聽聽'鎴戠殑瀹?,
聽聽聽MDSYS.SDO_GEOMETRY(2001,聽-- SDO_GTYPE
聽聽聽聽聽NULL,聽聽-- SDO_SRID
聽聽聽聽聽NULL,聽聽-- SDO_POINT
聽聽聽聽聽MDSYS.SDO_ELEM_INFO_ARRAY (1,聽-- SDO_STARTING_OFFSET
聽聽聽聽聽聽聽聽1,聽-- SDO_ETYPE
聽聽聽聽聽聽聽聽1),聽-- SDO_INTERPRETATION
聽聽聽聽聽MDSYS.SDO_ORDINATE_ARRAY (41884696,14377039)));
-- 鍒涘緩緙虹渷鐨凴-tree絀洪棿绱㈠紩
drop index POI_IDX;
CREATE INDEX POI_IDX on poi(gshape)
聽I(yíng)NDEXTYPE is MDSYS.SPATIAL_INDEX;
--聽PARAMETERS('SDO_LEVEL=10000');聽-- 180*60*60*1000*2/100/100*90*60*60*1000*2/100/100 = 8398080000
-- 绱㈠紩綺楁護(hù)鐭╁艦紿楀彛閫夋嫨SQL璇彞(瀵逛簬鐐瑰湴鐗╁璞★紝绱㈠紩綺楁護(hù)鐨勭粨鏋滄槸綺劇‘鐨?
SELECT * FROM POI P
聽WHERE sdo_filter(P.gshape,
聽聽mdsys.sdo_geometry(2003,NULL,NULL,
聽聽聽聽mdsys.sdo_elem_info_array(1,1003,3),
聽聽聽聽mdsys.sdo_ordinate_array(41883696,14376039, 41885696,14378039)),
聽聽'querytype=window') = 'TRUE';
-- 綺劇‘鍖歸厤鐭╁艦紿楀彛閫夋嫨SQL璇彞(璁$畻闈炲父鑰楁椂)
SELECT * FROM POI P
聽WHERE sdo_relate(P.gshape,
聽聽mdsys.sdo_geometry(2003,NULL,NULL,
聽聽聽聽mdsys.sdo_elem_info_array(1,1003,3),
聽聽聽聽mdsys.sdo_ordinate_array(41883696,14376039, 41885696,14378039)),
聽聽'mask=INSIDE querytype=window') = 'TRUE';
聽
/**
聽* <p>Title: </p>
聽*
聽* <p>Description: </p>
聽*
聽* <p>Copyright: Copyright (c) 2006</p>
聽*
聽* <p>Company: </p>
聽*
聽* @author聽sunfruit
聽* @version 1.0
聽*/
public class SdoSelect {
聽 public SdoSelect() {
聽 }
聽 public static void main(String[] args) {
聽聽聽 String driver = "oracle.jdbc.driver.OracleDriver";
聽聽聽 String url = "jdbc:oracle:thin:@172.16.75.200:1521:starmap";
聽聽聽 String uid = "hmbst";
聽聽聽 String psw = "hmbst";
聽聽聽 Connection conn = null;
聽聽聽 PreparedStatement ps=null;
聽聽聽 try {
聽聽聽聽聽 Class.forName(driver);
聽聽聽聽聽 conn = DriverManager.getConnection(url, uid, psw);
聽聽聽聽聽 JGeometry jGeometry=new JGeometry(41884696,14377039,42884696,14477039,0);
聽聽聽聽聽 STRUCT obj =jGeometry.store(jGeometry,conn);
聽聽聽聽聽 String sql = "SELECT * FROM POISDO p WHERE sdo_filter(p.gshape,?,'querytype=window')='TRUE'";
聽聽聽聽聽 ps = conn.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
聽聽聽聽聽 ps.clearParameters();
聽聽聽聽聽 ps.setObject(1, obj);
聽聽聽聽聽 // 鎻掑叆鐐瑰湴鐗╄褰?br />聽聽聽聽聽 ResultSet rs=ps.executeQuery();
聽聽聽聽聽 while(rs.next())
聽聽聽聽聽 {
聽聽聽聽聽聽聽 STRUCT st = (oracle.sql.STRUCT)rs.getObject("gshape");
聽聽聽聽聽聽聽 JGeometry j_geom = JGeometry.load(st);
聽聽聽聽聽聽聽 double[] dou=j_geom.getPoint();
聽聽聽聽聽聽聽 String buff="";
聽聽聽聽聽聽聽 for(int i=0;i<dou.length;i++)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽 buff=buff+String.valueOf((int)dou[i])+"聽聽 ";
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 System.out.println(buff);
聽聽聽聽聽 }
聽聽聽 }
聽聽聽 catch (Exception ex) {
聽聽聽聽聽 ex.printStackTrace();
聽聽聽 }
聽聽聽 finally
聽聽聽 {
聽聽聽聽聽 if(conn!=null)
聽聽聽聽聽 {
聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽聽 conn.close();
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 catch (SQLException ex) {
聽聽聽聽聽聽聽聽聽 ex.printStackTrace();
聽聽聽聽聽聽聽 }
聽聽聽聽聽 }
聽聽聽聽聽 if(ps!=null)
聽聽聽聽聽 {
聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽聽 ps.close();
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 catch (SQLException ex) {
聽聽聽聽聽聽聽聽聽 ex.printStackTrace();
聽聽聽聽聽聽聽 }
聽聽聽聽聽 }
聽聽聽 }
聽 }
}
琛≒OISDO鐨勭粨鏋勫涓?br />create table poi (
聽 id聽I(yíng)NTEGER,
聽聽gname聽VARCHAR2(256),
聽聽gshape聽MDSYS.SDO_GEOMETRY);
聽聽聽 }
聽 }
}
琛≒OISDO鐨勭粨鏋勫涓?br />create table poi (
聽 id聽I(yíng)NTEGER,
聽聽gname聽VARCHAR2(256),
聽聽gshape聽MDSYS.SDO_GEOMETRY);
Step2. 鍦?font color="#003366">user_sdo_geom_metadata
琛ㄤ腑鎻掑叆鏂拌褰曪紝鐢ㄤ簬鎻忚堪絀洪棿瀛楁
INSERT INTO user_sdo_geom_metadata VALUES (
聽聽聽 'mylake',聽聽聽聽//---琛ㄥ悕
聽聽聽 'shape',聽聽聽聽//---瀛楁鍚?br />聽聽聽 MDSYS.SDO_DIM_ARRAY(聽聽聽
聽聽聽聽聽聽聽 MDSYS.SDO_DIM_ELEMENT('X', 0, 100, 0.05),聽聽聽聽//---X緇存渶灝忥紝鏈澶у煎拰瀹瑰繊搴︺?br />聽聽聽聽聽聽聽 MDSYS.SDO_DIM_ELEMENT('Y', 0, 100, 0.05)聽聽聽聽//---Y緇存渶灝忥紝鏈澶у煎拰瀹瑰繊搴?br />聽聽聽 ),
聽聽聽 NULL聽聽聽聽//---鍧愭爣緋伙紝緙虹渷涓虹瑳鍗″皵鍧愭爣緋?/font>
);
Step3. 鍒涘緩絀洪棿绱㈠紩
CREATE INDEX mylake_idx ON mylake(shape)
聽聽聽 INDEXTYPE IS MDSYS.SPATIAL_INDEX
Step4. 鎻掑叆絀洪棿鏁版嵁
Oracle Spatial鐢?code>MDSYS.SDO_GEOMETRY鏉ュ瓨鍌ㄧ┖闂存暟鎹?瀹氫箟涓猴細(xì)CREATE TYPE sdo_geometry AS OBJECT (
聽聽聽 SDO_GTYPE NUMBER,
聽聽聽 SDO_SRID NUMBER,
聽聽聽 SDO_POINT SDO_POINT_TYPE,
聽聽聽 SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY,
聽聽聽 SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY);
SDO_GTYPE錛?font color="#000000">鐢ㄥ洓涓暟瀛楀畾涔変簡(jiǎn)鎵鏈夌殑褰㈢姸
聽聽聽聽聽聽聽聽聽聽聽 絎竴浣?緇存暟
聽聽聽聽聽聽聽聽聽聽聽 絎簩浣?綰挎ц〃紺恒傜敤浜?錛?緇存暟鎹紝浜岀淮涓?
聽聽聽聽聽聽聽聽聽聽聽 鏈鍚庝袱浣?Value Geometry Description 00 UNKNOWN_GEOMETRY
Spatial ignores this value 01 POINT
A single point element 02 LINE
or CURVE
Contains one line string element that may be linear, curved or both 03 POLYGON
Contains one polygon element with or without other polygon elements in it 04 COLLECTION
A heterogeneous collection of elements 05 MULTIPOINT
Contains one or more points 06 MULTILINE
or MULTICURVE
Contains one or more line string elements 07 MULTIPOLYGON
Contains multiple polygon elements that maybe disjoint
SDO_SRID錛?font color="#000000">鍧愭爣緋伙紝NULL涓虹瑳鍗″皵鍧愭爣緋匯?br />SDO_POINT錛?/font>Oracle Spatial涔熷彲瀹氫箟鍗曚釜鐨勭偣錛?font color="#003366">SDO_POINT鐨勫畾涔?聽聽聽 CREATE TYPE sdo_point_type AS OBJECT (X NUMBER,Y NUMBER,Z NUMBER);
聽聽聽 濡備綍鏄簩緇達(dá)紝Z涓篘ULL銆?br />SDO_ELEM_INFO錛?/font>姣忎笁涓兼弿榪頒竴涓?font color="#000000">鍏冪礌銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽絎竴涓鹼細(xì)絎竴涓《鐐瑰湪SDO_ORDINATES_ARR寮濮嬩綅緗?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽絎簩涓鹼細(xì)鍏冪礌綾誨瀷
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽絎笁涓鹼細(xì)欏剁偣榪炴帴鏂瑰紡錛?-閫氳繃鐩寸嚎榪炴帴錛?-閫氳繃鍦嗗姬榪炴帴
聽聽聽 瀹氫箟涓?br />聽聽聽 CREATE TYPE sdo_elem_info_array AS VARRAY (1048576) of NUMBER;
SDO_ORDINATES錛?font color="#000000">鍑犱綍鍥懼艦鎵鏈夐《鐐瑰垪琛ㄣ傚畾涔変負(fù)聽聽聽 CREATE TYPE sdo_ordinate_array AS VARRAY (1048576) of NUMBER;
FONT color=#003366>// 鎻掑叆鍖呭惈涓涓矝灞跨殑婀栨硦INSERT INTO mylake VALUES(
聽聽聽 10,聽
聽聽聽 'Lake Calhoun',聽
聽聽聽 MDSYS.SDO_GEOMETRY(
聽聽聽聽聽聽聽 2003,
聽聽聽聽聽聽聽 NULL,
聽聽聽聽聽聽聽 NULL,
聽聽聽聽聽聽聽 MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1),
聽聽聽聽聽聽聽 MDSYS.SDO_ORDINATE_ARRAY(0,0, 10,0, 10,10, 0,10, 0,0, 4,4, 6,4, 6,6, 4,6, 4,4)
聽聽聽 ));
// 鎻掑叆涓よ墭灝忚埞
INSERT INTO mylake VALUES(
聽聽聽 11,聽
聽聽聽 'The Windswept',聽
聽聽聽 MDSYS.SDO_GEOMETRY(
聽聽聽聽聽聽聽 2003,
聽聽聽聽聽聽聽 NULL,
聽聽聽聽聽聽聽 NULL,
聽聽聽聽聽聽聽 MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
聽聽聽聽聽聽聽 MDSYS.SDO_ORDINATE_ARRAY(2,2, 3,2, 3,2, 2,3, 2,2)
聽聽聽 )
);
INSERT INTO mylake VALUES(
聽聽聽 12,聽
聽聽聽 'Blue Crest',聽
聽聽聽 MDSYS.SDO_GEOMETRY(
聽聽聽聽聽聽聽 2003,
聽聽聽聽聽聽聽 NULL,
聽聽聽聽聽聽聽 NULL,
聽聽聽聽聽聽聽 MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
聽聽聽聽聽聽聽 MDSYS.SDO_ORDINATE_ARRAY(7,7, 8,7, 8,7, 7,8, 7,7)
聽聽聽 )
);
Step4. 鏌ヨ
SELECT name boat_name // 閫夋嫨鍦ㄥ畾涔夌煩褰㈠唴鐨勬墍鏈夊皬鑸?code> // masktype鍙仈鍚堜嬌鐢?br />
Oracle Spatial鏌ヨ鏁版嵁鍖呮嫭浜屼釜澶勭悊榪囩▼錛?br />1.鍙氳繃绱㈠紩鏌ヨ鍊欓夐」銆傞氳繃鍑芥暟SDO_FILTER瀹炵幇錛?br />
SDO_FILTER(geometry1 MDSYS.SDO_GEOMETRY,聽geometry2 MDSYS.SDO_GEOMETRY, params VARCHAR2)
geometry1錛?/font>
蹇呴』鏄绱㈠紩鐨勫嚑浣曟暟鎹?br />geometry2錛?/font>涓嶄竴瀹氭槸琛ㄤ腑鐨勭┖闂村瓧孌碉紝涔熶笉瑕佹眰琚儲(chǔ)寮?br />params錛?/font>Filter綾誨瀷
聽聽聽聽聽聽聽 querytype=WINDOW錛?/font>geometry2涓嶈姹傛潵鑷〃
聽聽聽聽聽聽聽 querytype=JOIN錛歡eometry2蹇呴』鏉ヨ嚜琛?/p>
FROM mylake t
WHERE feature_id = 12
AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,
聽聽聽 mdsys.sdo_elem_info_array(1,1003,1),
聽聽聽 mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),
聽聽聽 'querytype=WINDOW') = 'TRUE';
2.鍐嶆鏌ユ瘡涓欓夐」鏄惁鍜屾潯浠剁簿紜尮閰嶃傞氳繃鍑芥暟SDO_RELATE瀹炵幇錛?br />SDO_RELATE(geometry1 MDSYS.SDO_GEOMETRY, geometry2 MDSYS.SDO_GEOMETRY, params VARCHAR2)
masktype綾誨瀷
DISJOINT
鈥?the boundaries and interiors do not intersect
TOUCH
鈥?the boundaries intersect but the interiors do not intersect
OVERLAPBDYDISJOINT
鈥?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.
OVERLAPBDYINTERSECT
鈥?the boundaries and interiors of the two objects intersect
EQUAL
鈥?the two objects have the same boundary and interior
CONTAINS
鈥?the interior and boundary of one object is completely contained in the interior of the other object
COVERS
鈥?the interior of one object is completely contained in the interior of the other object and their boundaries intersect
INSIDE
鈥?the opposite of CONTAINS
. A INSIDE B
implies B CONTAINS A
.
COVEREDBY
鈥?the opposite of COVERS
. A COVEREDBY B
implies B COVERS A
.
ON
鈥?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.
ANYINTERACT
鈥?the objects are non-disjoint.
SELECT name boat_name
FROM mylake t
WHERE feature_id = 12
AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,
聽聽聽 mdsys.sdo_elem_info_array(1,1003,1),
聽聽聽 mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),
聽聽聽 'querytype=WINDOW') = 'TRUE'
AND SDO_RELATE(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,
聽聽聽 mdsys.sdo_elem_info_array(1,1003,1),
聽聽聽 mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),
聽聽聽 'masktype=INSIDE querytype=WINDOW') = 'TRUE'SELECT feature_id id
FROM mylake t
WHERE feature_id = 12
AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,
聽聽聽 mdsys.sdo_elem_info_array(1,1003,1),
聽聽聽 mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),
聽聽聽 'querytype=WINDOW') = 'TRUE'
AND SDO_RELATE(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,
聽聽聽 mdsys.sdo_elem_info_array(1,1003,1),
聽聽聽 mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),
聽聽聽 'masktype=INSIDE+TOUCH querytype=WINDOW') = 'TRUE'
Oracle Spatial 鎻愪緵鐨勫叾浠栨煡璇㈠嚱鏁幫細(xì)
Query Description SDO_NN
Nearest neighbor SDO_SDO_WITHIN_DISTANCE
All geometries with a certain distance Functions Description SDO_GEOM.SDO_MBR
The minimum bounding rectangle for a geometry SDO_GEOM.SDO_DISTANCE
The distance between two geometries SDO_GEOM.SDO_INTERSECTION
Provides the intersection point of two geometries
]]>
AS
聽聽 SELECT * FROM TableName where colname=XX_ID
GO
鍦ㄨ皟鐢ㄧ殑鏃跺欏拰Oracle鏈夋槑鏄劇殑涓嶅悓錛屽涓嬶細(xì)
Connection connection=xxxxxx;
CallableStatement callableStatement = connection.prepareCall("{call PROC_WARE_INFO_STAT(?) }");
callableStatement.setInt(1,100);
callableStatement.executeQuery();
ResultSet rs = callableStatement.getResultSet();
CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS
BEGIN
聽聽聽 OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB;
END TESTC;
鍙互鐪嬪埌錛屽畠鏄妸娓告爣錛堝彲浠ョ悊瑙d負(fù)涓涓寚閽堬級(jí)錛屼綔涓轟竴涓猳ut 鍙傛暟鏉ヨ繑鍥炲肩殑銆?/p>
鍦╦ava閲岃皟鐢ㄦ椂灝辯敤涓嬮潰鐨勪唬鐮侊細(xì)
package com.hyq.src;
import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.*;
public class TestProcedureTHREE {
聽 public TestProcedureTHREE() {
聽 }
聽 public static void main(String[] args ){
聽聽聽 String driver = "oracle.jdbc.driver.OracleDriver";
聽聽聽 String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
聽聽聽 Statement stmt = null;
聽聽聽 ResultSet rs = null;
聽聽聽 Connection conn = null;
聽聽聽 try {
聽聽聽聽聽 Class.forName(driver);
聽聽聽聽聽 conn =聽 DriverManager.getConnection(strUrl, "hyq", "hyq");
聽聽聽聽聽 CallableStatement proc = null;
聽聽聽聽聽 proc = conn.prepareCall("{ call hyq.testc(?) }");
聽聽聽聽聽 proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
聽聽聽聽聽 proc.execute();
聽聽聽聽聽 rs = (ResultSet)proc.getObject(1);
聽聽聽聽聽 while(rs.next())
聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽 System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");
聽聽聽聽聽 }
聽聽聽 }
聽聽聽 catch (SQLException ex2) {
聽聽聽聽聽 ex2.printStackTrace();
聽聽聽 }
聽聽聽 catch (Exception ex2) {
聽聽聽聽聽 ex2.printStackTrace();
聽聽聽 }
聽聽聽 finally{
聽聽聽聽聽 try {
聽聽聽聽聽聽聽 if(rs != null){
聽聽聽聽聽聽聽聽聽 rs.close();
聽聽聽聽聽聽聽聽聽 if(stmt!=null){
聽聽聽聽聽聽聽聽聽聽聽 stmt.close();
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽 if(conn!=null){
聽聽聽聽聽聽聽聽聽聽聽 conn.close();
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 }
聽聽聽聽聽 }
聽聽聽聽聽 catch (SQLException ex1) {
聽聽聽聽聽 }
聽聽聽 }
聽 }
}
鍦ㄨ繖閲岃娉ㄦ剰錛屽湪鎵ц鍓嶄竴瀹氳鍏堟妸oracle鐨勯┍鍔ㄥ寘鏀懼埌class璺緞閲岋紝鍚﹀垯浼?xì)鎶ラ敊鐨勩?br />
1銆侀殣寮忚漿鎹㈠鑷寸儲(chǔ)寮曞け鏁?榪欎竴鐐瑰簲褰撳紩璧烽噸瑙?涔熸槸寮鍙戜腑緇忓父浼?xì)鐘殑閿欒?
鐢變簬琛ㄧ殑瀛楁tu_mdn瀹氫箟涓簐archar2(20),浣嗗湪鏌ヨ鏃舵妸璇ュ瓧孌典綔涓簄umber綾誨瀷浠here鏉′歡浼犵粰Oracle,榪欐牱浼?xì)瀵艰嚧鐑?chǔ)寮曞け鏁?
閿欒鐨勪緥瀛愶細(xì)select * from test where tu_mdn=13333333333;
姝g‘鐨勪緥瀛愶細(xì)select * from test where tu_mdn='13333333333';
2銆佸绱㈠紩鍒楄繘琛岃繍綆楀鑷寸儲(chǔ)寮曞け鏁?鎴戞墍鎸囩殑瀵圭儲(chǔ)寮曞垪榪涜榪愮畻鍖呮嫭(+錛?錛?錛?錛? 絳?
閿欒鐨勪緥瀛愶細(xì)select * from test where id-1=9;
姝g‘鐨勪緥瀛愶細(xì)select * from test where id=10;
3銆佷嬌鐢∣racle鍐呴儴鍑芥暟瀵艱嚧绱㈠紩澶辨晥.瀵逛簬榪欐牱鎯呭喌搴斿綋鍒涘緩鍩轟簬鍑芥暟鐨勭儲(chǔ)寮?
閿欒鐨勪緥瀛愶細(xì)select * from test where round(id)=10; 璇存槑錛屾鏃秈d鐨勭儲(chǔ)寮曞凡緇忎笉璧蜂綔鐢ㄤ簡(jiǎn)
姝g‘鐨勪緥瀛愶細(xì)棣栧厛寤虹珛鍑芥暟绱㈠紩錛宑reate index test_id_fbi_idx on test(round(id));
鐒跺悗 select * from test where round(id)=10; 榪欐椂鍑芥暟绱㈠紩璧蜂綔鐢ㄤ簡(jiǎn)
涓婃湀鏈ぉ錛?BR>SQL> select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from
2 dual
3 ;
LASTDAY
----------
2004-09-30
涓婃湀浠婂ぉ
SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual
2 ;
PRETODAY
----------
2004-09-29
涓婃湀棣栧ぉ
SQL> select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') FirstDay
2 from dual;
FIRSTDAY
----------
2004-09-01
浠ヤ笅杞創(chuàng)錛?BR> Oracle
鍦ㄦ棩鏈熶嬌鐢ㄤ笂鍏佽鏋佸ぇ鐨勭伒媧繪с傜敱浜庡彲浠ュ湪鏃ユ湡瀛楁瀛樺偍鏃墮棿鍜屾棩鏈燂紝浠庤屾湁鍑芥暟鍙互鏃㈠紩鐢ㄦ棩鏈熷張寮曠敤鏃墮棿銆?BR>Oracle 鎵鎻愪緵鐨勪竴浜涙棩鏈熷嚱鏁板涓嬫墍紺恒?BR>1. SYSDATE
榪斿洖褰撳墠鐨勬棩鏈熷拰鏃墮棿銆?BR>紺轟緥
SELECT sysdate FROM dual;
SYSDATE
----------
05-3鏈?-03
2. ADD_MONTHS(d, no_of_month)
褰撳墠鏃ユ湡"m"鍚庢帹"no_of_month" 涓湀銆傚弬鏁?no_of_month"鍙負(fù)浠諱綍鏁存暟銆?BR>紺轟緥
SELECT add_months(sysdate,2) FROM dual;
ADD_MONTHS
----------
05-5鏈?-03
SELECT add_months(sysdate,-2) FROM dual;
ADD_MONTHS
----------
05-1鏈?-03
3. LAST_DAY(month_day)
榪斿洖鍙橀噺"month_day"涓墍鎸囧畾鏈堜喚鐨勬渶鍚庝竴澶╃殑鏃ユ湡銆?BR>紺轟緥
SELECT last_day(sysdate) FROM dual;
LAST_DAY(S
----------
31-3鏈?-03
4. MONTHS_BETWEEN(d1, d2)
榪斿洖鏃ユ湡 d1 鍜?d2 涔嬮棿鐨勬湀浠芥暟銆傚鏋?d1 鏅氫簬 d2錛岀粨鏋滀負(fù)姝o紝鍚﹀垯榪斿洖璐熸暟銆?BR>紺轟緥
SELECT months_between(sysdate,to_date('20030101','YYYYMMDD')) FROM dual;
MONTHS_BETWEEN(SYSDATE,TO_DATE('20030101','YYYYMMDD'))
------------------------------------------------------
2.15773932
5. NEXT_DAY(d, day_of_week)
榪斿洖鐢?day_of_week"鍛藉悕鐨勶紝鍦ㄥ彉閲?d"鎸囧畾鐨勬棩鏈熶箣鍚庣殑絎竴涓伐浣滄棩鐨勬棩鏈熴傚弬鏁?day_of_week"蹇呴』涓鴻鏄熸湡涓殑鏌愪竴澶┿?BR>紺轟緥
-- 2003.3.2 鏄槦鏈熸棩
SELECT next_day(to_date('20030226','YYYYMMDD'),1) FROM dual;
NEXT_DAY(T
----------
02-3鏈?-03
鏃ユ湡鏍煎紡
鏍煎紡鍏冪礌 璇存槑
AD 鎴?A.D. 甯︽湁鎴栦笉甯︽湁鍙ュ彿鐨?AD 鏍囪
BC 鎴?B.C. 甯︽湁鎴栦笉甯︽湁鍙ュ彿鐨?BC 鏍囪
D 涓鍛ㄤ腑鐨勫ぉ (1-7)
DAY 澶╃殑鍚嶇О (Sunday - Saturday)
DD 涓鏈堜腑鐨勫ぉ (1 - 31)
DDD 涓騫翠腑鐨勫ぉ (1 - 366)
DY 澶╃殑緙╁啓 (Sun - Sat)
HH 涓澶╀腑鐨勫皬鏃?(1 - 12)
HH24 涓澶╀腑鐨勫皬鏃?(0 - 23)
MI 鍒嗛挓 (0-59)
MM 鏈?(01-12)
MON 鏈堝悕縐扮殑緙╁啓
MONTH 鏈堢殑鍚嶇О
SS 縐?(0-59)
YYYY 4 涓暟瀛楄〃紺虹殑騫?/P>