ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>青草av.久久免费一区,在线欧美一级视频,国产精品久久久久影视http://www.aygfsteel.com/stevenjohn/category/51103.html那些青春的岁æœ?/description>zh-cnWed, 21 Aug 2013 02:47:19 GMTWed, 21 Aug 2013 02:47:19 GMT60Oracle行çñ”锁和表çñ”é”?http://www.aygfsteel.com/stevenjohn/archive/2013/08/20/403102.htmlabinabinTue, 20 Aug 2013 14:38:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/08/20/403102.htmlhttp://www.aygfsteel.com/stevenjohn/comments/403102.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/08/20/403102.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/403102.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/403102.htmlselect * from abin1 t where t.id=21 for update;

表çñ”é”?
lock table abin1 IN EXCLUSIVE MODE (nowait);

]]>
ORACLE分页SQL语句http://www.aygfsteel.com/stevenjohn/archive/2013/05/10/399100.htmlabinabinFri, 10 May 2013 05:29:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/05/10/399100.htmlhttp://www.aygfsteel.com/stevenjohn/comments/399100.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/05/10/399100.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/399100.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/399100.html1.æ ÒŽ®ROWID来分
select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from

t_xiaoxi  order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
执行旉™—´0.03¿U?br />2.按分析函数来åˆ?br />select * from (select t.*,row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<10000 and rk>9980;
执行旉™—´1.01¿U?br />3.按ROWNUM来分
select * from(select t.*,rownum rn from(select * from t_xiaoxi order by cid desc) t where rownum<10000) where

rn>9980;执行旉™—´0.1¿U?br />其中t_xiaoxi䏸™¡¨åç§°åQŒcid䏸™¡¨çš„关键字ŒDµï¼Œå–按CID降序排序后的½W?981-9999条记录,t_xiaoxi表有70000多条记录
个äh感觉1的效率最好,3‹Æ¡ä¹‹åQ?最å·?/p>

]]>
PRAGMA AUTONOMOUS_TRANSACTION(自治事务) http://www.aygfsteel.com/stevenjohn/archive/2013/03/08/396198.htmlabinabinFri, 08 Mar 2013 08:29:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/03/08/396198.htmlhttp://www.aygfsteel.com/stevenjohn/comments/396198.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/03/08/396198.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/396198.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/396198.html˜q™æ®µæ—‰™—´é‡åˆ°ä¸€ä¸ªé—®é¢˜ï¼Œ½E‹åºé‡Œæ˜Žæ˜Žæ’入了一条记录,但在后边的一ŒDµProcedure中却查不到刚刚插入的记录,最后发现这个Procedure的定义中加入äº?span style="font-weight: bold">PRAGMA AUTONOMOUS_TRANSACTIONã€?/p>

PRAGMA AUTONOMOUS_TRANSACTION中文¾˜»è¯‘˜q‡æ¥å?#8220;自治事务”åQˆç¿»è¯‘çš„˜q˜ç®—好理解)åQŒå¯¹äºŽå®šä¹‰æˆè‡ªæ²»äº‹åŠ¡çš„ProcedureåQŒå®žé™…上相当于一ŒD늋¬ç«‹è¿è¡Œçš„½E‹åºŒDµï¼Œ˜q™æ®µ½E‹åºä¸ä¾èµ–于ä¸È¨‹åºï¼Œä¹?strong>不干æ¶?/strong>ä¸È¨‹åº?/p>

自治事务的特�/h2>

½W¬ä¸€,˜q™æ®µ½E‹åºä¸ä¾èµ–于原有Main½E‹åºåQŒæ¯”如Main½E‹åºä¸­æœ‰æœªæäº¤çš„æ•°æ®åQŒé‚£ä¹ˆåœ¨è‡ªæ²»äº‹åŠ¡ä¸­æ˜¯æŸ¥æ‰¾ä¸åˆ°çš„ã€?/p>

½W¬äºŒ,在自æ²ÖMº‹åС䏭åQŒcommit或者rollback只会提交或回滚当前自æ²ÖMº‹åŠ¡ä¸­çš„DMLåQŒä¸ä¼šåª„响到Main½E‹åºä¸­çš„DMLã€?/p>


Autonomous Transaction Demo 1

Without Pragma Autonomous Transaction

CREATE TABLE t (  
test_value VARCHAR2(25));  
  
CREATE OR REPLACE PROCEDURE child_block IS  
  
BEGIN  
  INSERT INTO t  
  (test_value)  
  VALUES  
  ('Child block insert');  
  COMMIT;  
END child_block;  
/  
  
CREATE OR REPLACE PROCEDURE parent_block IS  
  
BEGIN  
  INSERT INTO t  
  (test_value)  
  VALUES  
  ('Parent block insert');  
  
   child_block;  
  
   ROLLBACK;  
END parent_block;  
/  
  
-- run the parent procedure   
exec parent_block  
  
-- check the results   
SELECT * FROM t;  



Output:  
Parent block insert  
Child block insert  




With Pragma Autonomous Transaction

CREATE OR REPLACE PROCEDURE child_block IS  
  
PRAGMA AUTONOMOUS_TRANSACTION;  
  
BEGIN  
  INSERT INTO t  
  (test_value)  
  VALUES  
  ('Child block insert');  
  
  COMMIT;  
END child_block;  
/  
  
CREATE OR REPLACE PROCEDURE parent_block IS  
  
BEGIN  
  INSERT INTO t  
  (test_value)  
  VALUES  
  ('Parent block insert');  
  
   child_block;  
  
   ROLLBACK;  
END parent_block;  
/  
-- empty the test table   
TRUNCATE TABLE t;  
  
-- run the parent procedure   
exec parent_block;  
  
-- check the results   
SELECT * FROM t;  

 



Output:  
Child block insert  



Autonomous Transaction Demo 2

Without Pragma Autonomous Transaction
DROP TABLE t; 
 
CREATE TABLE t (testcol NUMBER); 
 
CREATE OR REPLACE FUNCTION howmanyrows RETURN INTEGER IS 
 i INTEGER; 
BEGIN 
  SELECT COUNT(*) 
  INTO i 
  FROM t; 
 
  RETURN i; 
END howmanyrows; 

 
CREATE OR REPLACE PROCEDURE testproc IS 
 a INTEGER; 
 b INTEGER; 
 c INTEGER; 
BEGIN 
  SELECT COUNT(*) 
  INTO a 
  FROM t; 
 
  INSERT INTO t VALUES (1); 
  COMMIT; 
 
  INSERT INTO t VALUES (2); 
  INSERT INTO t VALUES (3); 
 
  b := howmanyrows; 
 
  INSERT INTO t VALUES (4); 
  INSERT INTO t VALUES (5); 
  INSERT INTO t VALUES (6); 
  COMMIT; 
 
  SELECT COUNT(*) 
  INTO c 
  FROM t; 
 
  dbms_output.put_line(a); 
  dbms_output.put_line(b); 
  dbms_output.put_line(c); 
END testproc; 

 
set serveroutput on 
 
exec testproc 




Output:  
0  
3  
6  
Total execution time 2.782 sec.  




With Pragma Autonomous Transaction



Output:  
0  
1  
6  




转蝲è¯äh³¨æ˜Žå‡ºå¤?http://blog.csdn.net/pan_tian/article/details/7675800






]]>
pl/sql中按F8执行单行语句 http://www.aygfsteel.com/stevenjohn/archive/2013/01/29/394860.htmlabinabinTue, 29 Jan 2013 03:28:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/01/29/394860.htmlhttp://www.aygfsteel.com/stevenjohn/comments/394860.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/01/29/394860.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/394860.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/394860.html

pl/sql中设¾|?

tools->preferences->sql window->AutoSelect statement

然后光标攑֜¨ä¸€è¡Œï¼ŒæŒ‰F8ž®±å¯ä»¥äº†, æ³¨æ„: æ¯ä¸ªè¯­å¥¾l“å°¾˜q˜è¦åˆ†å·æ ‡æ³¨ä¸€ä¸‹ï¼



]]>
jdbc 操作oracle CLOB字段http://www.aygfsteel.com/stevenjohn/archive/2013/01/08/393991.htmlabinabinTue, 08 Jan 2013 14:00:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/01/08/393991.htmlhttp://www.aygfsteel.com/stevenjohn/comments/393991.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/01/08/393991.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/393991.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/393991.html//˜q™ä¸ªé€‚用于oracle10,11åQŒä»¥å‰oracle9操作CLOB字段相当的繁琐,记着导入驱动åŒ?span class="Apple-converted-space"> 
package com.abin.wto.dbs.oracle; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

public class OperateOracle { 
public static void main(String[] args) { 
Connection conn=null; 
PreparedStatement ps=null; 
ResultSet rs=null; 
try { 
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
String url="jdbc:oracle:thin:@localhost:1521:XE"; 
conn=DriverManager.getConnection(url,"abin","abin"); 
String sql="insert into bignumber values(?,?)"; 
ps=conn.prepareStatement(sql); 
ps.setInt(1, 1); 
oracle.sql.CLOB clob=oracle.sql.CLOB.createTemporary(conn, false, oracle.sql.CLOB.DURATION_SESSION); 
clob.open(oracle.sql.CLOB.MODE_READWRITE); 
clob.setString(3, "llll"); 
ps.setClob(2, clob); 
int result=ps.executeUpdate(); 
System.out.println("result="+result); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 

} 











package com.abin.wto.dbs.oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import oracle.sql.CLOB;

public class OperateOracle {
 public static void main(String[] args) {
  Connection conn=null;
  PreparedStatement ps=null;
  ResultSet rs=null;
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
   String url="jdbc:oracle:thin:@localhost:1521:XE";
   conn=DriverManager.getConnection(url,"abin","abin");
   String sql="insert into bignumber values(?,?)";
   ps=conn.prepareStatement(sql);
   ps.setInt(1, 8888);
   java.sql.Clob  clob=oracle.sql.CLOB.createTemporary(conn, false, oracle.sql.CLOB.DURATION_SESSION);
   clob.setString(1, "55555555555555");
   ps.setClob(2, clob);
   int result=ps.executeUpdate();
   System.out.println("result="+result);
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   if(ps!=null){
    try {
     ps.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   try {
    CLOB.freeTemporary(null);
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
 }

}

 



]]>
sql ˜q‡æ×o重复记录http://www.aygfsteel.com/stevenjohn/archive/2013/01/04/393780.htmlabinabinFri, 04 Jan 2013 14:51:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/01/04/393780.htmlhttp://www.aygfsteel.com/stevenjohn/comments/393780.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/01/04/393780.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/393780.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/393780.html删除重复的记录,只保留一条:
delete from abin1 t where rowid not in (select max(rowid) from abin1 s group by s.id1  );
delete from abin1 t where t.rowid not in (select min(s.rowid) from abin1 s where t.id1=s.id1 group by s.id1)
删除全部重复记录åQ?br />delete from abin1 t where t.id1 in (select s.id1 from abin1 s group by s.id1 having count(s.id1)>1 );
delete from abin1 t where exists (select * from abin1 s where t.id1=s.id1 group by s.id1 having count(s.id1)>1)
取出有重复的记录åQŒæ²¡æœ‰é‡å¤çš„单条记录不取åQ?br />select * from abin1 t where t.id1 in (select s.id1 from abin1 s group by s.id1 having(count(s.id1))>1 );
select * from abin1 t where exists (select * from abin1 s where s.id1=t.id1 group by s.id1 having(count(s.id1))>1);
删除重复记录åQˆä¿ç•™ä¸€æ¡ï¼‰åQ?br />delete from abin1 t where t.id1 not in(select max(s.id1) from abin1 s group by s.name1 having count(s.name1)>0);



]]>
Oracle回滚ŒD늚„概念åQŒç”¨æ³•和规划及问题的解决http://www.aygfsteel.com/stevenjohn/archive/2012/12/14/392959.htmlabinabinThu, 13 Dec 2012 16:10:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/12/14/392959.htmlhttp://www.aygfsteel.com/stevenjohn/comments/392959.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/12/14/392959.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/392959.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/392959.html阅读全文

]]>
一个非典型的ORA-01555的解å†?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/12/13/392957.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Thu, 13 Dec 2012 15:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/12/13/392957.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/392957.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/12/13/392957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/392957.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/392957.html</trackback:ping><description><![CDATA[<p>ORA-01555:å¿«ç…§˜q‡æ—§ã€?nbsp;   一个对于Oracle DBA来说最¾lå…¸é—®é¢˜ã€?br />发生的根本原因:一致性读å‡ÞZº†é—®é¢˜ã€?nbsp;   </p> <p>看到¾|‘上有个同学åQŒä‹D例说明,觉得不错åQŒæ‹¿æ¥ç”¨ä¸‹ï¼š<br />假设有张表,叫table1åQŒé‡Œé¢æœ‰5000万行数据åQŒå‡è®ùN¢„计全表扫æ?‹Æ¡éœ€è¦?个小æ—Óž¼Œæˆ‘们从过½E‹æ¥çœ‹ï¼š    <br />    <br />1、在1炚w’ŸåQŒæœ‰ä¸ªç”¨æˆ·A发出了select * from table1;此时不管ž®†æ¥table1怎么变化åQŒæ­£¼‹®çš„¾l“果应该是用户A会看到在1炚w’Ÿ˜q™ä¸ªæ—¶åˆ»çš„内宏V€‚这个是没有疑问的ã€?nbsp;   <br />2、在1ç‚?0分,有个用户B执行了update命ä×oåQŒæ›´æ–îCº†table1表中的第4000万行的这条记录,˜q™æ—¶åQŒç”¨æˆ·A的全表扫描还没有到达½W?000万条。毫无疑问,˜q™ä¸ªæ—¶å€™ï¼Œ½W?000万行的这条记录是被写åˆîCº†å›žæ»šŒDµé‡ŒåŽÖMº†çš„,我假设是回滚ŒDµRBS1åQŒå¦‚果用户A的全表扫描到达了½W?000万行åQŒæ˜¯åº”该会正¼‹®çš„从回滚段RBS1中读取出1炚w’Ÿæ—¶åˆ»çš„内容的ã€?nbsp;   <br />3、这æ—Óž¼Œç”¨æˆ·Bž®†ä»–刚才做的操作commit了,但是˜q™æ—¶åQŒç³»¾lŸä»ç„¶å¯ä»¥ç»™ç”¨æˆ·Aæä¾›æ­£ç¡®çš„æ•°æ®ï¼Œå› äØ“é‚£ç¬¬4000万行记录的内容仍然还在回滚段RBS1里,¾pȝ»Ÿå¯ä»¥æ ÒŽ®SCN来到回滚ŒDµé‡Œæ‰‘Öˆ°æ­£ç¡®çš„æ•°æ®ï¼Œä½†æ˜¯å¤§å®¶æ³¨æ„åˆŽÍ¼Œ˜q™æ—¶è®°å½•在RBS1里的½W?000万行记录已经发生了一炚w‡å¤§çš„æ”¹å˜åQšå°±æ˜¯è¿™ä¸ªç¬¬4000万行的在回滚ŒDµRBS1é‡Œçš„æ•°æ®æœ‰å¯èƒ½éšæ—¶è¢«è¦†ç›–æŽ‰ï¼Œå› äØ“˜q™æ¡è®°å½•已经被提交了åQï¼åQ?nbsp;   <br />4、由于用户A的查询时间æ˜O长,而业务在一直不断的˜q›è¡ŒåQŒRBS1回滚ŒDµåœ¨è¢«å¤šä¸ªä¸åŒçš„tracnsaction使用着åQŒè¿™ä¸ªå›žæ»šæ®µé‡Œçš„extent循环åˆîCº†½W?000万行数据所在的extentåQŒç”±äºŽè¿™æ¡è®°å½•å·²¾lè¢«æ ‡è®°æäº¤äº†ï¼Œæ‰€ä»¥è¿™ä¸ªextent是可以被其他transaction覆盖掉的åQ?nbsp;   <br />5、到äº?ç‚?0分,用户A的查询终于到了第4000万行åQŒè€Œè¿™æ—¶å·²¾lå‡ºçŽîCº†½W?条说的情况,需要到回滚ŒDµRBS1åŽÀL‰¾æ•°æ®åQŒä½†æ˜¯å·²¾lè¢«è¦†ç›–掉了åQŒäºŽæ˜?1555ž®±å‡ºçŽîCº†ã€?nbsp;   <br />    <br />˜q™æ¬¡å‡ºçŽ°çš„ORA-01555åQŒå¼•èµïLš„原因很特ŒDŠã€?nbsp;   <br />报错是回滚段SYSSMU1有问é¢?    <br />所以断定的是,òq¶ä¸æ˜¯å› ä¸ºå¤§é‡çš„è¯Õd†™åQŒé€ æˆçš„一致性读错误åQŒè€Œä¸”å› äØ“å›žæ»šŒD늚„错误åQŒä‹É快照出现了问题ã€?nbsp;   <br />    <br />首先观察下回滚段åQ?nbsp;   <br />SQL> select segment_name,tablespace_name,status from dba_rollback_segs;    <br />发现表空间UNDOTBS1的回滚段_SYSSMU1$-10$都是onlineã€?nbsp;   <br />发现表空间UNDOTBS2的回滚段SYSSMU1是竟然是needs recovery,其他都是offlineã€?nbsp;   <br />最有趣的是˜q™ä¸ªæ•°æ®åº“指定的UNDO是UNDOTBS1åQŒUNDOTBS2实际已经被弃用了ã€?nbsp;   <br />    <br />ž®è¯•把该回滚ŒDµoffline后删除,但是提示非法ã€?nbsp;   <br />重启数据库后该回滚段状态变成了availabeã€?nbsp;   <br />再次ž®è¯•offline后删除,˜q˜æ˜¯æç¤ºæ­£åœ¨ä½¿ç”¨ã€?nbsp;   </p> <p> <br />用直接更新数据字典的æ–ÒŽ³•    <br />SQL>update undo$ set status$=2 where name='SYSSMU1';    <br />å‘çŽ°è¯¥å›žæ»šæ®µçŠ¶æ€å˜æ›´äØ“offlineåQŒdrop掉即可ã€?nbsp;   <br />ORA-1555不再出现ã€?nbsp;   </p> <p><br />本篇文章来源äº?Linux公社¾|‘ç«™(<a >www.linuxidc.com</a>)  原文链接åQ?a >http://www.linuxidc.com/Linux/2012-10/73260.htm</a></p><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/392957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-12-13 23:28 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/12/13/392957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 正则表达式实ä¾?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/12/06/392533.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Thu, 06 Dec 2012 03:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/12/06/392533.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/392533.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/12/06/392533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/392533.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/392533.html</trackback:ping><description><![CDATA[<div>1、oracle正则表达式很强大哟,åŽÀLŽ‰å­—ç¬¦ä¸²çš„åQˆå¦‚果字½W¦ä¸²å¼€å¤´å’Œ¾l“尾存在"双引åïLš„话)起头和结ž®„¡š„双引å?br />select regexp_replace('"1234"456"','^(")|(")$','') from dual;<br />2、过滤掉字段里面的所有大ž®å†™å­—母åQŒå¤§ž®å†™å­—母通杀<br />select regexp_replace(t.address,'^[a-z]+|[A-Z]+$','') from abin7 t;</div><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/392533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-12-06 11:42 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/12/06/392533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 常用˜qžæŽ¥å’Œç”¨æ³?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/12/05/392449.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Tue, 04 Dec 2012 16:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/12/05/392449.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/392449.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/12/05/392449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/392449.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/392449.html</trackback:ping><description><![CDATA[<div> <div>create table abin6(id integer,<br />name nvarchar2(100),<br />score integer,<br />constraint pk_abin6 primary key(id));<br /><br />create table abin7(id integer,<br />address nvarchar2(100),<br />sid integer,<br />constraint pk_abin7 primary key(id),<br />constraint fk_abin7 foreign key (sid) references abin6(id)<br />);</div><br /><br /><br />select * from abin6 t left join abin7 s on t.id=s.sid and t.id=1;<br />select * from abin6 t left join abin7 s on t.id=s.sid where t.id=1;<br />select * from abin6 t,abin7 s where t.id=s.sid(+) ;<br />select * from abin6 t,abin7 s where t.id(+)=s.sid;<br />select * from abin6 t,abin7 s where s.sid(+)=t.id;<br />select * from abin6 t,abin7 s where s.sid=t.id(+);<br />select * from abin6 t inner join abin7 s on t.id=s.sid;<br />select * from abin6 t union select * from abin7 s where exists (select * from abin6 k where s.sid=k.id and k.id<br />=1);<br />select * from abin6 t full join abin7 s on t.id=s.sid;<br />select * from abin7 s full join abin6 t on s.sid=t.id;<br />select * from abin6 natural join abin7;<br />select * from abin6 t cross join abin7;<br /><br />以下两句是等ä»ähŸ¥è¯¢ï¼š<br /> <div>select * from abin6 t where id=1 or id=2;<br />select * from abin6 t where t.id=1 union all select * from abin6 s where s.id=2;<br /><br /><br />一。查æ‰ùN‡å¤è®°å½?br />1。查扑օ¨éƒ¨é‡å¤è®°å½?br />select * from abin4 s where s.name in (select t.name from abin4 t <br />group by t.name having count(t.name)>1);<br />select * from abin4 s where exists (select * from abin4 t where t.name=s.name <br />group by t.name  having count(t.name)>1 );<br /><br />2。过滤重复记å½?只显½CÞZ¸€æ?<br />select * from abin4 s where s.id in (select max(id) from abin4 t group by t.name );<br />二。删除重复记å½?<br />1。删除全部重复记录(慎用åQ?<br />Delete è¡?Where 重复字段 In (Select 重复字段 From è¡?Group By 重复字段 Having Count(*)>1)<br />2。保留一条(˜q™ä¸ªåº”该是大多数人所需要的 ^_^åQ?br />Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)<br />注:此处保留ID最大一条记å½?br /><br /><br /><br /><br /><a >http://blog.csdn.net/csskysea/article/details/6987760</a></div></div><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/392449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-12-05 00:33 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/12/05/392449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 中union的用æ³?http://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392446.htmlabinabinTue, 04 Dec 2012 15:26:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392446.htmlhttp://www.aygfsteel.com/stevenjohn/comments/392446.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392446.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/392446.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/392446.html

UNION 指ä×o的目的是ž®†ä¸¤ä¸?SQL 语句的结果合òq¶è“væ?可以查看你要的查询结æž?

例如:

SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales

注意:union用法ä¸?两个select语句的字ŒD늱»åž‹åŒ¹é…?而且字段个数要相å?如上面的例子,在实际的软äšg开发过½E?会遇到更复杂的情å†?具体è¯ïLœ‹ä¸‹é¢çš„例å­?

select  '1' as type,FL_ID,FL_CODE,FL_CNAME,FLDA.FL_PARENTID from FLDA
WHERE ZT_ID=2006030002
union 
select  '2' as type,XM_ID,XM_CODE ,XM_CNAME ,FL_ID from XMDA
where exists (select * from (select  FL_ID from FLDA WHERE ZT_ID=2006030002 ) a where XMDA.fl_id=a.fl_id)
order by type,FL_PARENTID ,FL_ID

˜q™ä¸ªå¥å­çš„æ„æ€æ˜¯ž®†ä¸¤ä¸ªsql语句union查询出来,查询的条件就是看XMDA表中的FL_ID是否和主表FLDA里的FL_ID值相匚w…,(也就是存åœ?.

UNION在进行表链接后会½{›é€‰æŽ‰é‡å¤çš„记录,所以在表链接后会对所产生的结果集˜q›è¡ŒæŽ’序˜qç®—åQŒåˆ é™¤é‡å¤çš„记录再返回结果ã€?

在查询中会遇åˆ?UNION ALL,它的用法和union一æ ?只不˜q‡union含有distinct的功èƒ?它会把两张表了重复的记录åŽÀLމ,而union all不会,所以从效率ä¸?union all 会高一ç‚?但在实际中用到的òq¶ä¸æ˜¯å¾ˆå¤?

表头会用½W¬ä¸€ä¸ªè¿žæŽ¥å—的字ŒDüc€‚。。。。。。。。ã€?

而UNION ALL只是½Ž€å•çš„ž®†ä¸¤ä¸ªç»“果合òq¶åŽž®Þp¿”å›žã€‚è¿™æ øP¼Œå¦‚æžœ˜q”回的两个结果集中有重复的数据,那么˜q”回的结果集ž®×ƒ¼šåŒ…含重复的数据了ã€?

  从效率上è¯ß_¼ŒUNION ALL 要比UNION快很多,所以,如果可以¼‹®è®¤åˆåƈ的两个结果集中不包含重复的数据的话,那么ž®×ƒ‹É用UNION ALLåQŒå¦‚下:

ž®½é‡ä½¿ç”¨union allåQŒå› ä¸ºunion需要进行排序,去除重复记录åQŒæ•ˆçŽ‡ä½Ž



]]>
Oracle natural join(自然˜qžæŽ¥)http://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392444.htmlabinabinTue, 04 Dec 2012 15:22:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392444.htmlhttp://www.aygfsteel.com/stevenjohn/comments/392444.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392444.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/392444.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/392444.html

虽然natural join(自然˜qžæŽ¥)实际上的用的比较ž®‘,但实际上˜q™ä¸ª˜qžæŽ¥æ˜¯éžå¸¸æœ‰ç”¨çš„åQŒè‹¥èƒ½ç»å¸æ€‹É用一下,实际上是非常方便的ã€?/p>

自然˜qžæŽ¥æ˜¯åœ¨ä¸¤å¼ è¡¨ä¸­å¯ÀL‰¾é‚£äº›æ•°æ®¾cÕdž‹å’Œåˆ—名都相同的字ŒDµï¼Œç„¶åŽè‡ªåŠ¨åœ°å°†ä»–ä»¬˜qžæŽ¥èµäh¥åQŒåƈ˜q”回所有符合条件按的结果ã€?/p>

来看一下自然连接的例子�/p>

Select emp.ename,dept.dname

From emp natural join dept;

˜q™é‡Œæˆ‘们òq¶æ²¡æœ‰æŒ‡å®šè¿žæŽ¥çš„æ¡äšgåQŒå®žé™…上oracle为我们自作主张的ž®†ï¼Œemp中的deptnoå’Œdept中的deptno做了˜qžæŽ¥ã€?/p>

也就是实际上相当�/p>

Select emp.ename,dept.dname

From emp join dept on emp.deptno = dept.deptno;

因䨓˜q™ä¸¤å¼ è¡¨çš„这两个字段deptno的类型个名称完全相同。所以ä‹É用natural join时被自然的连接在一起了ã€?/p>

另外åQ?/p>

1.如果做自然连接的两个表的有多个字ŒDµéƒ½æ»¡èƒö有相同名¿UîC¸ª¾cÕdž‹åQŒé‚£ä¹ˆä»–ä»¬ä¼šè¢«ä½œä¸ø™‡ªç„¶è¿žæŽ¥çš„æ¡äšgã€?/p>

2.如果自然˜qžæŽ¥çš„两个表仅是字段名称相同åQŒä½†æ•°æ®¾cÕdž‹ä¸åŒåQŒé‚£ä¹ˆå°†ä¼šè¿”回一个错误ã€?/p>

3.ç”׃ºŽoracle中可以进行这¿Uéžå¸¸ç®€å•çš„natural joinåQŒæˆ‘们在设计表时åQŒåº”该尽量在不同表中å…ähœ‰ç›¸åŒå«ä¹‰çš„å­—ŒDµä‹É用相同的名字和数据类型。以方便以后使用natural join

最后我们在前面丄¡š„例子都得åˆîC»¥ä¸‹çš„¾l“æžœåQ?/p>

SQL> Select emp.ename,dept.dname

2 From emp natural join dept;

ENAME DNAME

——————– —————-

SMITH RESEARCH

ALLEN SALES

WARD SALES

JONES RESEARCH

MARTIN SALES

BLAKE SALES

CLARK ACCOUNTING

SCOTT RESEARCH

KING ACCOUNTING

TURNER SALES

ADAMS RESEARCH

JAMES SALES

FORD RESEARCH

MILLER ACCOUNTING



]]>
oracle alter tablehttp://www.aygfsteel.com/stevenjohn/archive/2012/12/03/392358.htmlabinabinMon, 03 Dec 2012 02:51:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/12/03/392358.htmlhttp://www.aygfsteel.com/stevenjohn/comments/392358.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/12/03/392358.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/392358.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/392358.html 
Table created

 SQL> desc lee
Name  Type          Nullable Default Comments
----- ------------- -------- ------- --------
ID    NUMBER                                 
NAME  VARCHAR2(100) Y                        
SCORE NUMBER        Y                        
 
SQL> alter table lee add createtime date;
 
Table altered
 
SQL> desc lee
Name       Type          Nullable Default Comments
---------- ------------- -------- ------- --------
ID         NUMBER                                 
NAME       VARCHAR2(100) Y                        
SCORE      NUMBER        Y                        
CREATETIME DATE          Y                        
 
SQL> alter table lee modify createtime nvarchar2(100);
 
Table altered
 
SQL> desc lee
Name       Type           Nullable Default Comments
---------- -------------- -------- ------- --------
ID         NUMBER                                  
NAME       VARCHAR2(100)  Y                        
SCORE      NUMBER         Y                        
CREATETIME NVARCHAR2(100) Y                        
 
SQL> alter table lee rename column createtime to mytime;
 
Table altered
 
SQL> desc lee
Name   Type           Nullable Default Comments
------ -------------- -------- ------- --------
ID     NUMBER                                  
NAME   VARCHAR2(100)  Y                        
SCORE  NUMBER         Y                        
MYTIME NVARCHAR2(100) Y                        
 
SQL> alter table lee modify mytime date;
 
Table altered
 
SQL> desc lee
Name   Type          Nullable Default Comments
------ ------------- -------- ------- --------
ID     NUMBER                                 
NAME   VARCHAR2(100) Y                        
SCORE  NUMBER        Y                        
MYTIME DATE          Y                        
 
SQL> desc lee
Name   Type          Nullable Default Comments
------ ------------- -------- ------- --------
ID     NUMBER                                 
NAME   VARCHAR2(100) Y                        
SCORE  NUMBER        Y                        
MYTIME DATE          Y                         
                  
 
SQL> alter table lee rename column mytime to createtime;
 
Table altered
 
SQL> desc lee
Name       Type          Nullable Default Comments
---------- ------------- -------- ------- --------
ID         NUMBER                                 
NAME       VARCHAR2(100) Y                        
SCORE      NUMBER        Y                        
CREATETIME DATE          Y                         
 
SQL> alter table lee drop column createtime;
 
Table altered
 
SQL> desc lee
Name  Type          Nullable Default Comments
----- ------------- -------- ------- --------
ID    NUMBER                                 
NAME  VARCHAR2(100) Y                        
SCORE NUMBER        Y                        
 
SQL>

]]>
ORACLE查看òq¶ä¿®æ”ÒŽœ€å¤§è¿žæŽ¥æ•°http://www.aygfsteel.com/stevenjohn/archive/2012/10/31/390497.htmlabinabinWed, 31 Oct 2012 01:47:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/10/31/390497.htmlhttp://www.aygfsteel.com/stevenjohn/comments/390497.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/10/31/390497.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/390497.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/390497.html1. 查看processeså’Œsessions参数

SQL> show parameter processes

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     1
db_writer_processes                  integer     1
job_queue_processes                  integer     10
log_archive_max_processes            integer     2
processes                            integer     150

 

SQL> show parameter sessions

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size           integer     0
java_soft_sessionspace_limit         integer     0
license_max_sessions                 integer     0
license_sessions_warning             integer     0
logmnr_max_persistent_sessions       integer     1
mts_sessions                         integer     165
sessions                             integer     170
shared_server_sessions               integer     165
SQL>

 

2. 修改processes和sessions�/p>

SQL> alter system set processes=300 scope=spfile;

¾pȝ»Ÿå·²æ›´æ”V€?/p>

SQL> alter system set sessions=335 scope=spfile;

¾pȝ»Ÿå·²æ›´æ”V€?/p>

3. 修改processeså’Œsessions值必™å»é‡å¯oracle服务器才能生æ•?/p>

ORACLE的连接数(sessions)与其参数文äšg中的˜q›ç¨‹æ•?process)有关åQŒå®ƒä»¬çš„关系如下åQ?/p>

sessions=(1.1*process+5)

 

 查询数据库当前进½E‹çš„˜qžæŽ¥æ•ŽÍ¼š

 select count(*) from v$process;

  查看数据库当前会话的˜qžæŽ¥æ•ŽÍ¼š

  select count(*) from v$session;

  查看数据库的òq¶å‘˜qžæŽ¥æ•ŽÍ¼š

  select count(*) from v$session where status='ACTIVE';

  查看当前数据库徏立的会话情况åQ?/p>

  select sid,serial#,username,program,machine,status from v$session;

 查询数据库允许的最大连接数åQ?/p>

  select value from v$parameter where name = 'processes';

  或者:show parameter processes;

  修改数据库允许的最大连接数åQ?/p>

  alter system set processes = 300 scope = spfile;

  (需要重启数据库才能实现˜qžæŽ¥æ•°çš„修改)

  重启数据库:

  shutdown immediate;

  startup;

  查看当前有哪些用æˆäh­£åœ¨ä‹É用数据:

  select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine

  from v$session a,v$sqlarea b

  where a.sql_address = b.address

  order by cpu_time/executions desc;

  备注åQšUNIX 1个用户session对应一个操作系¾lŸprocessåQŒè€ŒWindows体现在线½E‹ã€?/p>

  启动oracle

  su - oracle

  sqlplus system/pwd as sysdba   //˜q›å…¥sql

  startup                                      //启动数据åº?/p>

  lsnrctl start                               //启动监听

  sqlplus "/as sysdba"

  shutdown immediate;

  startup mount;

  alter database open;



]]>
Oracle事务的ACIDç‰ÒŽ€? http://www.aygfsteel.com/stevenjohn/archive/2012/10/21/389967.htmlabinabinSun, 21 Oct 2012 08:37:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/10/21/389967.htmlhttp://www.aygfsteel.com/stevenjohn/comments/389967.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/10/21/389967.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/389967.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/389967.html阅读全文

]]>
Oracle type资料攉™›†http://www.aygfsteel.com/stevenjohn/archive/2012/09/25/388459.htmlabinabinMon, 24 Sep 2012 16:37:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/09/25/388459.htmlhttp://www.aygfsteel.com/stevenjohn/comments/388459.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/09/25/388459.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/388459.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/388459.htmlhttp://blog.sina.com.cn/s/blog_6cfb6b090100ve92.html 

http://www.cnblogs.com/lanzi/archive/2011/03/30/1999790.html 




]]>
Oracle 批处ç?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/09/17/387949.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Mon, 17 Sep 2012 15:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/09/17/387949.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/387949.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/09/17/387949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/387949.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/387949.html</trackback:ping><description><![CDATA[<div>1、Connection创徏¾c?br /> <p>package com.abin.lee.db.oracle.batch;</p> <p>import java.sql.Connection;<br />import java.sql.DriverManager;</p> <p>public class OracleConnection {<br /> private static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();<br /> private static final String URL="jdbc:oracle:thin:@localhost:1521:XE";<br /> private static final String USER="abin";<br /> private static final String PWD="abin";<br /> private static final String DRIVER="oracle.jdbc.driver.OracleDriver";<br /> <br /> public static Connection getConnection(){<br />  Connection conn=null;<br />  if(null==threadLocal.get()){<br />   try {<br />    Class.forName(DRIVER);<br />    conn=DriverManager.getConnection(URL, USER, PWD);<br />    threadLocal.set(conn);<br />   } catch (Exception e) {<br />    e.printStackTrace();<br />   }<br />  }else{<br />   conn=threadLocal.get();<br />  }<br />  return conn;<br /> }<br /> <br /> <br />}<br /></p><br /><br /><br /><br /><br />2、测试语å?br /> <p>package com.abin.lee.db.oracle.batch;</p> <p>import java.sql.Connection;<br />import java.sql.PreparedStatement;<br />import java.sql.SQLException;<br />import java.text.SimpleDateFormat;</p> <p>import junit.framework.TestCase;</p> <p>public class OracleBatch extends TestCase {<br /> public void testinsert() throws SQLException {<br />  Connection conn = null;<br />  PreparedStatement ps = null;<br />  conn = OracleConnection.getConnection();<br />  String sql = "insert into abing(id,name) values (?,?)";<br />  ps = conn.prepareStatement(sql);<br />  System.out.println("start="<br />    + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")<br />      .format(new java.util.Date()));<br />  try {<br />   for (int i = 0; i <= 50000; i++) {<br />    ps.setObject(1, i);<br />    ps.setObject(2, "abin" + i);<br />    ps.addBatch();<br />    if (i % 10000 == 0) {<br />     // System.out.println("i="+i);<br />     ps.executeBatch();<br />     ps.clearBatch();<br />    }</p> <p>   }</p> <p>  } catch (SQLException e) {<br />   e.printStackTrace();<br />  }<br />  System.out.println("end="<br />    + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")<br />      .format(new java.util.Date()));</p> <p> }</p> <p>}<br /></p></div><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/387949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-09-17 23:15 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/09/17/387949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle function é›?http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387721.htmlabinabinFri, 14 Sep 2012 06:21:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387721.htmlhttp://www.aygfsteel.com/stevenjohn/comments/387721.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387721.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/387721.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/387721.html阅读全文

]]>
Java 接收Oracle函数游标˜q”回¾l“æžœé›?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387714.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Fri, 14 Sep 2012 04:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387714.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/387714.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/387714.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/387714.html</trackback:ping><description><![CDATA[-- Create table<br />create table ABIN1<br />(<br />  ID1         NUMBER,<br />  NAME1       NVARCHAR2(100),<br />  CREATETIME1 DATE default sysdate<br />)<br /><br /><br /><br /> <p>create or replace function getFunction(myname varchar2)<br />return sys_refcursor<br />as</p> <p>v_sql varchar2(4000);<br />mylist sys_refcursor;<br />begin<br />       v_sql:='select * from abin1 where name1=:1';<br />       open myList for v_sql using myname;<br />       return(myList);<br />end;<br /><br /><br /><br /></p> <p>package com.abin.lee.db.oracle;</p> <p>import java.sql.Connection;<br />import java.sql.DriverManager;<br />import java.sql.SQLException;</p> <p>public class OracleConnection {<br /> private static final String USER="abin";<br /> private static final String PWD="abin";<br /> private static final String URL="jdbc:oracle:thin:@localhost:1521:XE";<br /> private static final String DRIVER="oracle.jdbc.driver.OracleDriver";<br /> private static ThreadLocal<Connection> threadLocal=new ThreadLocal<Connection>(){<br />  protected Connection initialValue(){<br />   Connection conn=null;<br />   try {<br />    Class.forName(DRIVER);<br />    if(null==conn||conn.isClosed()){<br />     conn=DriverManager.getConnection(URL, USER, PWD);<br />    }<br />   } catch (Exception e) {<br />    e.printStackTrace();<br />   }<br />   return conn;<br />  }<br />  <br /> }; <br /> <br /> <br /> public static Connection getConnection() throws ClassNotFoundException, SQLException{<br />  Connection conn=null;<br />  if(threadLocal.get()==null){<br />   Class.forName(DRIVER);<br />   conn=DriverManager.getConnection(URL, USER, PWD);<br />   threadLocal.set(conn);<br />  }else {<br />   return threadLocal.get();<br />  }<br />  return conn;<br /> }</p> <p>}<br /></p> <p><br /><br /><br /></p> <p>package com.abin.lee.db.oracle;</p> <p>import java.sql.CallableStatement;<br />import java.sql.Connection;<br />import java.sql.ResultSet;</p> <p>import junit.framework.TestCase;<br />import oracle.jdbc.OracleTypes;</p> <p>public class GetFunctionResultSet extends TestCase{<br /> public void test(){<br />  Connection conn=null;<br />  CallableStatement cs=null;<br />  ResultSet rs=null;<br />  try {<br />   conn=OracleConnection.getConnection();<br /> /*此处是关键,不要写错了。第一个问号代表返回å€û|¼ŒgetFunctionåQˆï¼‰æ‹¬å·é‡Œé¢æ˜¯function的输入参数ã€?/   <br />   cs=conn.prepareCall("{?=call getFunction(?)}");<br />   cs.registerOutParameter(1, OracleTypes.CURSOR);<br />   cs.setString(2, "a1");<br />   cs.execute();<br />   rs=(ResultSet)cs.getObject(1);<br />   while(rs.next()&&rs!=null){<br />    System.out.println("ID="+rs.getInt("id1"));<br />    System.out.println("NAME="+rs.getString("name1"));<br />    System.out.println("NAME="+rs.getString("createtime1"));<br />   }<br />   <br />  } catch (Exception e) {<br />   e.printStackTrace();<br />  }<br />  /**<br />   * create or replace function getFunction(myname varchar2)<br />   return sys_refcursor<br />   as<br />   v_sql varchar2(4000);<br />   mylist sys_refcursor;<br />   begin<br />          v_sql:='select * from abin1 where name1=:1';<br />          open myList for v_sql using myname;<br />          return(myList);<br />   end;<br />   */<br />  <br /> }<br />}<br /></p> <p><br /><br /><br />参考资料:<br /><a >http://lanselixiangxc.bokee.com/267623.html</a></p><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/387714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-09-14 12:46 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 接收Oracle存储˜q‡ç¨‹æ¸¸æ ‡¾l“æžœé›?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387712.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Fri, 14 Sep 2012 04:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387712.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/387712.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/387712.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/387712.html</trackback:ping><description><![CDATA[-- Create table<br />create table ABIN1<br />(<br />  ID1         NUMBER,<br />  NAME1       NVARCHAR2(100),<br />  CREATETIME1 DATE default sysdate<br />)<br /><br />create or replace procedure getList(myname varchar2,mylist out sys_refcursor)<br />is<br />v_sql varchar2(4000);<br />begin<br />      v_sql:='select * from abin1 where name1=:1';<br />       open myList for v_sql using myname;<br />end;<br /><br /><br /><br /><br /> <p>package com.abin.lee.db.oracle;</p> <p>import java.sql.Connection;<br />import java.sql.DriverManager;<br />import java.sql.SQLException;</p> <p>public class OracleConnection {<br /> private static final String USER="abin";<br /> private static final String PWD="abin";<br /> private static final String URL="jdbc:oracle:thin:@localhost:1521:XE";<br /> private static final String DRIVER="oracle.jdbc.driver.OracleDriver";<br /> private static ThreadLocal<Connection> threadLocal=new ThreadLocal<Connection>(){<br />  protected Connection initialValue(){<br />   Connection conn=null;<br />   try {<br />    Class.forName(DRIVER);<br />    if(null==conn||conn.isClosed()){<br />     conn=DriverManager.getConnection(URL, USER, PWD);<br />    }<br />   } catch (Exception e) {<br />    e.printStackTrace();<br />   }<br />   return conn;<br />  }<br />  <br /> }; <br /> <br /> <br /> public static Connection getConnection() throws ClassNotFoundException, SQLException{<br />  Connection conn=null;<br />  if(threadLocal.get()==null){<br />   Class.forName(DRIVER);<br />   conn=DriverManager.getConnection(URL, USER, PWD);<br />   threadLocal.set(conn);<br />  }else {<br />   return threadLocal.get();<br />  }<br />  return conn;<br /> }</p> <p>}<br /></p><br /><br /><br /><br /><br /> <p>package com.abin.lee.db.oracle;</p> <p>import java.sql.CallableStatement;<br />import java.sql.Connection;<br />import java.sql.ResultSet;</p> <p>import junit.framework.TestCase;<br />import oracle.jdbc.OracleTypes;</p> <p>public class GetProcedureResultSet extends TestCase{<br /> public void test(){<br />  Connection conn=null;<br />  CallableStatement cs=null;<br />  ResultSet rs=null;<br />  try {<br />   conn=OracleConnection.getConnection();<br />   cs=conn.prepareCall("{call getList(?,?)}");<br />   cs.setString(1, "a1");<br />   cs.registerOutParameter(2, OracleTypes.CURSOR);<br />   cs.execute();<br />   rs=(ResultSet)cs.getObject(2);<br />   while(rs.next()&&rs!=null){<br />    System.out.println("ID="+rs.getInt("id1"));<br />    System.out.println("NAME="+rs.getString("name1"));<br />    System.out.println("NAME="+rs.getString("createtime1"));<br />   }<br />   <br />  } catch (Exception e) {<br />   e.printStackTrace();<br />  }<br />  <br />  <br /> }<br /> /**<br />  * create or replace procedure getList(myname varchar2,mylist out sys_refcursor)<br />  is<br />  v_sql varchar2(4000);<br />  begin<br />        v_sql:='select * from abin1 where name1=:1';<br />         open myList for v_sql using myname;<br />  end;<br />  */<br />}<br /></p><br /><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/387712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-09-14 12:42 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracleè¡¨åˆ†åŒø™¯¦è§?http://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387569.htmlabinabinWed, 12 Sep 2012 08:59:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387569.htmlhttp://www.aygfsteel.com/stevenjohn/comments/387569.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387569.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/387569.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/387569.html此文从以下几个方面来整理关于分区表的概念及操ä½?
        1.表空间及分区表的概念
        2.表分区的具体作用
        3.表分区的优缺ç‚?/div>
        4.表分区的几种¾cÕdž‹åŠæ“ä½œæ–¹æ³?/div>
        5.对表分区的维护性操ä½?
(1.) 表空间及分区表的概念
表空é—ß_¼š
  是一个或多个数据文äšg的集合,所有的数据对象都存攑֜¨æŒ‡å®šçš„表½Iºé—´ä¸­ï¼Œä½†ä¸»è¦å­˜æ”„¡š„是表åQ?所以称作表½Iºé—´ã€?/div>
 
分区表:
当表中的数据量不断增大,查询数据的速度ž®×ƒ¼šå˜æ…¢åQŒåº”用程序的性能ž®×ƒ¼šä¸‹é™åQŒè¿™æ—¶å°±åº”该考虑对表˜q›è¡Œåˆ†åŒºã€‚表˜q›è¡Œåˆ†åŒºåŽï¼Œé€»è¾‘上表仍然是一张完整的表,只是ž®†è¡¨ä¸­çš„æ•°æ®åœ¨ç‰©ç†ä¸Šå­˜æ”¾åˆ°å¤šä¸ªè¡¨½Iºé—´(物理文äšgä¸?åQŒè¿™æ ähŸ¥è¯¢æ•°æ®æ—¶åQŒä¸è‡³äºŽæ¯æ¬¡éƒ½æ‰«ææ•´å¼ è¡¨ã€?/div>
 
( 2).表分区的具体作用
Oracleçš„è¡¨åˆ†åŒºåŠŸèƒ½é€šè¿‡æ”¹å–„å¯ç®¡ç†æ€§ã€æ€§èƒ½å’Œå¯ç”¨æ€§ï¼Œä»Žè€ŒäØ“å„å¼åº”ç”¨½E‹åºå¸¦æ¥äº†æžå¤§çš„好处。通常åQŒåˆ†åŒºå¯ä»¥ä‹É某些查询以及¾l´æŠ¤æ“ä½œçš„æ€§èƒ½å¤§å¤§æé«˜ã€‚æ­¤å¤?分区˜q˜å¯ä»¥æžå¤§ç®€åŒ–常见的½Ž¡ç†ä»ÕdŠ¡åQŒåˆ†åŒºæ˜¯æž„徏千兆字节数据¾pȝ»Ÿæˆ–超高可用性系¾lŸçš„关键工具ã€?
 
分区功能能够ž®†è¡¨ã€çƒ¦å¼•或索引¾l„ç»‡è¡¨è¿›ä¸€æ­¥ç»†åˆ†äØ“ŒDµï¼Œ˜q™äº›æ•°æ®åº“对象的ŒDµå«åšåˆ†åŒºã€‚每个分区有自己的名¿UŽÍ¼Œ˜q˜å¯ä»¥é€‰æ‹©è‡ªå·±çš„存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段åQŒè¿™äº›æ®µæ—¢å¯˜q›è¡Œé›†ä½“½Ž¡ç†åQŒä¹Ÿå¯å•独管理,˜q™å°±ä½¿æ•°æ®åº“½Ž¡ç†å‘˜åœ¨½Ž¡ç†åˆ†åŒºåŽçš„对象时有相当大的灉|´»æ€§ã€‚但是,从应用程序的角度来看åQŒåˆ†åŒºåŽçš„表与非分区表完全相同,使用 SQL DML 命ä×o讉K—®åˆ†åŒºåŽçš„表时åQŒæ— éœ€ä»ÖM½•修改ã€?/div>
 
什么时候ä‹Éç”¨åˆ†åŒø™¡¨åQ?br />1、表的大ž®è¶…˜q?GBã€?/div>
2、表中包含历史数据,新的数据被增加都新的分区中�/div>
 
 (3).表分区的优缺ç‚?/div>
表分区有以下优点åQ?
1、改善查询性能åQšå¯¹åˆ†åŒºå¯¹è±¡çš„æŸ¥è¯¢å¯ä»¥ä»…搜烦自己兛_¿ƒçš„分区,提高‹‚€ç´¢é€Ÿåº¦ã€?/div>
2、增强可用性:如果表的某个分区出现故障åQŒè¡¨åœ¨å…¶ä»–分区的数据仍然可用åQ?/div>
3、维护方便:如果表的某个分区出现故障åQŒéœ€è¦ä¿®å¤æ•°æ®ï¼Œåªä¿®å¤è¯¥åˆ†åŒºå›_¯åQ?
4、均衡I/OåQšå¯ä»¥æŠŠä¸åŒçš„分区映ž®„到¼‚ç›˜ä»¥åã^è¡¡I/OåQŒæ”¹å–„整个系¾lŸæ€§èƒ½ã€?/div>
 
¾~ºç‚¹åQ?
分区表相养I¼šå·²ç»å­˜åœ¨çš„表没有æ–ÒŽ³•å¯ä»¥ç›´æŽ¥è½¬åŒ–ä¸ºåˆ†åŒø™¡¨ã€‚不˜q?Oracle 提供了在¾U‰K‡å®šä¹‰è¡¨çš„功能ã€?/div>
 
(4).表分区的几种¾cÕdž‹åŠæ“ä½œæ–¹æ³?/div>
 ä¸€.范围分区åQ?br />范围分区ž®†æ•°æ®åŸºäºŽèŒƒå›´æ˜ ž®„到每一个分区,˜q™ä¸ªèŒƒå›´æ˜¯ä½ åœ¨åˆ›å»ºåˆ†åŒºæ—¶æŒ‡å®šçš„分区键军_®šçš„。这¿Uåˆ†åŒºæ–¹å¼æ˜¯æœ€ä¸ºå¸¸ç”¨çš„åQŒåƈ且分区键¾lå¸¸é‡‡ç”¨æ—¥æœŸã€‚ä‹D个例子:你可能会ž®†é”€å”®æ•°æ®æŒ‰ç…§æœˆä»½è¿›è¡Œåˆ†åŒºã€?/div>
当ä‹É用范围分区时åQŒè¯·è€ƒè™‘以下几个规则åQ?/div>
1、每一个分区都必须有一个VALUES LESS THEN子句åQŒå®ƒæŒ‡å®šäº†ä¸€ä¸ªä¸åŒ…括在该分区中的上限倹{€‚分区键的ä“Q何值等于或者大于这个上限值的记录都会被加入到下一个高一些的分区中ã€?/div>
2、所有分区,除了½W¬ä¸€ä¸ªï¼Œéƒ½ä¼šæœ‰ä¸€ä¸ªéšå¼çš„下限å€û|¼Œ˜q™ä¸ªå€¼å°±æ˜¯æ­¤åˆ†åŒºçš„前一个分区的上限倹{€?/div>
3、在最高的分区中,MAXVALUE被定义。MAXVALUE代表了一个不¼‹®å®šçš„倹{€‚这个值高于其它分åŒÞZ¸­çš„ä“Q何分区键的å€û|¼Œä¹Ÿå¯ä»¥ç†è§£äؓ高于ä»ÖM½•分区中指定的VALUE LESS THENçš„å€û|¼ŒåŒæ—¶åŒ…括½Iºå€¹{€?/div>
例一åQ?/div>
假设有一个CUSTOMER表,表中有数æ?00000行,我们ž®†æ­¤è¡¨é€šè¿‡CUSTOMER_ID˜q›è¡Œåˆ†åŒºåQŒæ¯ä¸ªåˆ†åŒºå­˜å‚?00000行,我们ž®†æ¯ä¸ªåˆ†åŒÞZ¿å­˜åˆ°å•独的表½Iºé—´ä¸­ï¼Œ˜q™æ ·æ•°æ®æ–‡äšgž®±å¯ä»¥è·¨­‘Šå¤šä¸ªç‰©ç†ç£ç›˜ã€‚下面是创徏表和分区的代码,如下åQ?/div>
CREATE TABLE CUSTOMER
(
    CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,
    FIRST_NAME  VARCHAR2(30) NOT NULL,
    LAST_NAME   VARCHAR2(30) NOT NULL,
    PHONE        VARCHAR2(15) NOT NULL,
    EMAIL        VARCHAR2(80),
    STATUS       CHAR(1)
)
PARTITION BY RANGE (CUSTOMER_ID)
(
    PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,
    PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02
)
例二åQšæŒ‰æ—‰™—´åˆ’分
CREATE TABLE ORDER_ACTIVITIES
(
    ORDER_ID      NUMBER(7) NOT NULL,
    ORDER_DATE    DATE,
    TOTAL_AMOUNT NUMBER,
    CUSTOTMER_ID NUMBER(7),
    PAID           CHAR(1)
)
PARTITION BY RANGE (ORDER_DATE)
(
  PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY')) TABLESPACEORD_TS01,
  PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,
  PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03
)
例三åQšMAXVALUE
CREATE TABLE RangeTable
(
  idd   INT PRIMARY KEY ,
  iNAME VARCHAR(10),
  grade INT 
)
PARTITION  BY  RANGE (grade)
(
      PARTITION  part1 VALUES  LESS  THEN (1000) TABLESPACE  Part1_tb,
      PARTITION  part2 VALUES  LESS  THEN (MAXVALUE) TABLESPACE  Part2_tb
);
 
äº?列表分区åQ?/div>
该分区的特点是某列的值只有几个,åŸÞZºŽ˜q™æ ·çš„特ç‚ÒŽˆ‘们可以采用列表分区ã€?/div>
例一
CREATE TABLE PROBLEM_TICKETS
(
    PROBLEM_ID   NUMBER(7) NOT NULL PRIMARY KEY,
    DESCRIPTION  VARCHAR2(2000),
    CUSTOMER_ID  NUMBER(7) NOT NULL,
    DATE_ENTERED DATE NOT NULL,
    STATUS       VARCHAR2(20)
)
PARTITION BY LIST (STATUS)
(
      PARTITION PROB_ACTIVE   VALUES ('ACTIVE') TABLESPACE PROB_TS01,
      PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02
例二
CREATE  TABLE  ListTable
(
    id    INT  PRIMARY  KEY ,
    name  VARCHAR (20),
    area  VARCHAR (10)
)
PARTITION  BY  LIST (area)
(
    PARTITION  part1 VALUES ('guangdong','beijing') TABLESPACE  Part1_tb,
    PARTITION  part2 VALUES ('shanghai','nanjing')  TABLESPACE  Part2_tb
);
)
 
ä¸?散列分区åQ?br />˜q™ç±»åˆ†åŒºæ˜¯åœ¨åˆ—å€ég¸Šä½¿ç”¨æ•£åˆ—½Ž—法åQŒä»¥¼‹®å®šž®†è¡Œæ”‘Ö…¥å“ªä¸ªåˆ†åŒºä¸­ã€‚当列的值没有合适的条äšgæ—Óž¼Œå»ø™®®ä½¿ç”¨æ•£åˆ—分区ã€?/div>
散列分区为通过指定分区¾~–号来均匀分布数据的一¿Uåˆ†åŒºç±»åž‹ï¼Œå› äؓ通过在I/O讑֤‡ä¸Šè¿›è¡Œæ•£åˆ—分区,使得˜q™äº›åˆ†åŒºå¤§å°ä¸€è‡´ã€?/div>
例一åQ?
CREATE TABLE HASH_TABLE
(
  COL NUMBER(8),
  INF VARCHAR2(100)
)
PARTITION BY HASH (COL)
(
  PARTITION PART01 TABLESPACE HASH_TS01,
  PARTITION PART02 TABLESPACE HASH_TS02,
  PARTITION PART03 TABLESPACE HASH_TS03
)
½Ž€å†™ï¼š
CREATE TABLE emp
(
    empno NUMBER (4),
    ename VARCHAR2 (30),
    sal   NUMBER
)
PARTITION BY  HASH (empno) PARTITIONS 8
STORE IN (emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8);
 
hash分区最主要的机制是æ ÒŽ®hash½Ž—法来计½Ž—具体某条纪录应该插入到哪个分区ä¸?hash½Ž—法中最重要的是hash函数åQŒOracle中如果你要ä‹É用hash分区åQŒåªéœ€æŒ‡å®šåˆ†åŒºçš„æ•°é‡å³å¯ã€‚徏议分区的数量采用2çš„n‹Æ¡æ–¹åQŒè¿™æ ·å¯ä»¥ä‹É得各个分区间数据分布更加均匀ã€?/div>
 
å›?¾l„合范围散列分区
˜q™ç§åˆ†åŒºæ˜¯åŸºäºŽèŒƒå›´åˆ†åŒºå’Œåˆ—表分区åQŒè¡¨é¦–先按某列进行范围分区,然后再按某列˜q›è¡Œåˆ—表分区åQŒåˆ†åŒÞZ¹‹ä¸­çš„分区被称为子分区ã€?/div>
CREATE TABLE SALES
(
PRODUCT_ID VARCHAR2(5),
SALES_DATE DATE,
SALES_COST NUMBER(10),
STATUS VARCHAR2(20)
)
PARTITION BY RANGE(SALES_DATE) SUBPARTITION BY LIST (STATUS)
(
   PARTITION P1 VALUES LESS THAN(TO_DATE('2003-01-01','YYYY-MM-DD'))TABLESPACE rptfact2009
          (
              SUBPARTITION P1SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,
              SUBPARTITION P1SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009
          ),
   PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE rptfact2009
          (
              SUBPARTITION P2SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,
              SUBPARTITION P2SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009
          )
)
 
äº?复合范围散列分区åQ?/div>
˜q™ç§åˆ†åŒºæ˜¯åŸºäºŽèŒƒå›´åˆ†åŒºå’Œæ•£åˆ—分区åQŒè¡¨é¦–先按某列进行范围分区,然后再按某列˜q›è¡Œæ•£åˆ—分区ã€?/div>
create table dinya_test
 (
 transaction_id number primary key,
 item_id number(8) not null,
 item_description varchar2(300),
 transaction_date date
 )
 partition by range(transaction_date)subpartition by hash(transaction_id)  subpartitions 3 store in (dinya_space01,dinya_space02,dinya_space03)
 (
     partition part_01 values less than(to_date(‘2006-01-01’,’yyyy-mm-dd’)),
     partition part_02 values less than(to_date(‘2010-01-01’,’yyyy-mm-dd’)),
     partition part_03 values less than(maxvalue)
 );
 
(5).有关表分区的一些维护性操作:
一、添加分�
以下代码¾l™SALES表添加了一个P3分区
ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01','YYYY-MM-DD'));
注意åQšä»¥ä¸Šæ·»åŠ çš„åˆ†åŒºç•Œé™åº”è¯¥é«˜äºŽæœ€åŽä¸€ä¸ªåˆ†åŒºç•Œé™ã€?
以下代码¾l™SALES表的P3分区æ·ÕdŠ äº†ä¸€ä¸ªP3SUB1子分åŒ?
ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE');
二、删除分�
以下代码删除了P3表分区:
ALTER TABLE SALES DROP PARTITION P3;
在以下代码删除了P4SUB1子分区:
ALTER TABLE SALES DROP SUBPARTITION P4SUB1;
注意åQšå¦‚果删除的分区是表中唯一的分区,那么此分区将不能被删除,要想删除此分区,必须删除表ã€?
三、截断分�
截断某个分区是指删除某个分区中的数据åQŒåƈ不会删除分区åQŒä¹Ÿä¸ä¼šåˆ é™¤å…¶å®ƒåˆ†åŒºä¸­çš„æ•°æ®ã€‚当表中即ä‹É只有一个分区时åQŒä¹Ÿå¯ä»¥æˆªæ–­è¯¥åˆ†åŒºã€‚通过以下代码截断分区åQ?
ALTER TABLE SALES TRUNCATE PARTITION P2;
通过以下代码截断子分区:
ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;
四、合òq¶åˆ†åŒ?
åˆåÆˆåˆ†åŒºæ˜¯å°†ç›”R‚»çš„分区合òq¶æˆä¸€ä¸ªåˆ†åŒºï¼Œ¾l“果分区ž®†é‡‡ç”¨è¾ƒé«˜åˆ†åŒºçš„界限åQŒå€¼å¾—注意的是åQŒä¸èƒ½å°†åˆ†åŒºåˆåƈ到界限较低的分区。以下代码实çŽîCº†P1 P2分区的合òqÓž¼š
ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;
五、拆分分�
拆分分区ž®†ä¸€ä¸ªåˆ†åŒºæ‹†åˆ†ä¸¤ä¸ªæ–°åˆ†åŒºåQŒæ‹†åˆ†åŽåŽŸæ¥åˆ†åŒºä¸å†å­˜åœ¨ã€‚æ³¨æ„ä¸èƒ½å¯¹HASH¾cÕdž‹çš„åˆ†åŒø™¿›è¡Œæ‹†åˆ†ã€?
ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE('2003-02-01','YYYY-MM-DD')) INTO (PARTITION P21,PARTITION P22);
六、接合分�coalesca)
¾l“合分区是将散列分区中的数据接合到其它分åŒÞZ¸­åQŒå½“散列分区中的数据比较大时åQŒå¯ä»¥å¢žåŠ æ•£åˆ—åˆ†åŒºï¼Œç„¶åŽ˜q›è¡ŒæŽ¥åˆåQŒå€¼å¾—注意的是åQŒæŽ¥åˆåˆ†åŒºåªèƒ½ç”¨äºŽæ•£åˆ—分åŒÞZ¸­ã€‚通过以下代码˜q›è¡ŒæŽ¥åˆåˆ†åŒºåQ?
ALTER TABLE SALES COALESCA PARTITION;
七、重命名表分�
以下代码ž®†P21更改为P2
ALTER TABLE SALES RENAME PARTITION P21 TO P2;
八、相å…ÏxŸ¥è¯?br />跨分区查è¯?
select sum( *) from
(select count(*) cn from t_table_SS PARTITION (P200709_1)
union all
select count(*) cn from t_table_SS PARTITION (P200709_2)
);
查询表上有多ž®‘分åŒ?
SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='tableName'
查询索引信息
select object_name,object_type,tablespace_name,sum(value)
from v$segment_statistics
where statistic_name IN ('physical reads','physical write','logical reads')and object_type='INDEX'
group by object_name,object_type,tablespace_name
order by 4 desc
 
--昄¡¤ºæ•°æ®åº“æ‰€æœ‰åˆ†åŒø™¡¨çš„信息:
select * from DBA_PART_TABLES
 
--昄¡¤ºå½“å‰ç”¨æˆ·å¯è®¿é—®çš„æ‰€æœ‰åˆ†åŒø™¡¨ä¿¡æ¯:
select * from ALL_PART_TABLES
 
--昄¡¤ºå½“å‰ç”¨æˆ·æ‰€æœ‰åˆ†åŒø™¡¨çš„信息:
select * from USER_PART_TABLES
 
--昄¡¤ºè¡¨åˆ†åŒÞZ¿¡æ?昄¡¤ºæ•°æ®åº“æ‰€æœ‰åˆ†åŒø™¡¨çš„详¾l†åˆ†åŒÞZ¿¡æ¯ï¼š
select * from DBA_TAB_PARTITIONS
 
--昄¡¤ºå½“å‰ç”¨æˆ·å¯è®¿é—®çš„æ‰€æœ‰åˆ†åŒø™¡¨çš„详¾l†åˆ†åŒÞZ¿¡æ¯ï¼š
select * from ALL_TAB_PARTITIONS
 
--昄¡¤ºå½“å‰ç”¨æˆ·æ‰€æœ‰åˆ†åŒø™¡¨çš„详¾l†åˆ†åŒÞZ¿¡æ¯ï¼š
select * from USER_TAB_PARTITIONS
 
--昄¡¤ºå­åˆ†åŒÞZ¿¡æ?昄¡¤ºæ•°æ®åº“æ‰€æœ‰ç»„åˆåˆ†åŒø™¡¨çš„子分区信息åQ?
select * from DBA_TAB_SUBPARTITIONS
 
--昄¡¤ºå½“å‰ç”¨æˆ·å¯è®¿é—®çš„æ‰€æœ‰ç»„åˆåˆ†åŒø™¡¨çš„子分区信息åQ?
select * from ALL_TAB_SUBPARTITIONS
 
--昄¡¤ºå½“å‰ç”¨æˆ·æ‰€æœ‰ç»„åˆåˆ†åŒø™¡¨çš„子分区信息åQ?
select * from USER_TAB_SUBPARTITIONS
 
--昄¡¤ºåˆ†åŒºåˆ?昄¡¤ºæ•°æ®åº“æ‰€æœ‰åˆ†åŒø™¡¨çš„分区列信息åQ?
select * from DBA_PART_KEY_COLUMNS
 
--昄¡¤ºå½“å‰ç”¨æˆ·å¯è®¿é—®çš„æ‰€æœ‰åˆ†åŒø™¡¨çš„分区列信息åQ?
select * from ALL_PART_KEY_COLUMNS
 
--昄¡¤ºå½“å‰ç”¨æˆ·æ‰€æœ‰åˆ†åŒø™¡¨çš„分区列信息åQ?
select * from USER_PART_KEY_COLUMNS
 
--昄¡¤ºå­åˆ†åŒºåˆ— 昄¡¤ºæ•°æ®åº“æ‰€æœ‰åˆ†åŒø™¡¨çš„子分区列信息:
select * from DBA_SUBPART_KEY_COLUMNS
 
--昄¡¤ºå½“å‰ç”¨æˆ·å¯è®¿é—®çš„æ‰€æœ‰åˆ†åŒø™¡¨çš„子分区列信息:
select * from ALL_SUBPART_KEY_COLUMNS
 
--昄¡¤ºå½“å‰ç”¨æˆ·æ‰€æœ‰åˆ†åŒø™¡¨çš„子分区列信息:
select * from USER_SUBPART_KEY_COLUMNS
 
--怎样查询出oracleæ•°æ®åº“ä¸­æ‰€æœ‰çš„çš„åˆ†åŒø™¡¨
select * from user_tables a where a.partitioned='YES'
 
--删除一个表的数据是
truncate table table_name;
 
--删除分区表一个分区的数据�
alter table table_name truncate partition p5;




http://tianzt.blog.51cto.com/459544/171759/

]]>Oracle表分区和索引分区汇æ€?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387568.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Wed, 12 Sep 2012 08:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387568.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/387568.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387568.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/387568.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/387568.html</trackback:ping><description><![CDATA[<div class="wmqeeuq" id="cnblogs_post_body"> <p>Oracle表分区和索引分区汇æ€?/p> <p>ä¸ÞZº†½Ž€åŒ–数据库大表的管ç?例如在数据仓库中一般都是TB¾U§çš„æ•°é‡¾U?ORACLE8以后推出了分区选项.分区ž®†è¡¨åˆ†ç¦»åœ¨è‹¥äºŽä¸åŒçš„表空间上,用分而治之的æ–ÒŽ³•来支撑元限膨胀的大è¡?¾l„大表在物理一¾U§çš„可管理æ€?ž®†å¤§è¡¨åˆ†å‰²æˆè¾ƒå°çš„分区可以改善表的维护、备份、恢复、事务及查询性能ã€?/p> <p>分区的优点:</p> <p>1ã€?nbsp; 增强可用性:如果表的一个分区由于系¾lŸæ•…障而不能ä‹É用,表的其余好的分区仍可以ä‹É用;</p> <p>2ã€?nbsp; 减少关闭旉™—´åQšå¦‚果系¾lŸæ•…障只影响表的一部䆾分区åQŒé‚£ä¹ˆåªæœ‰è¿™éƒ¨ä†¾åˆ†åŒºéœ€è¦ä¿®å¤ï¼ŒçŸ¿èƒ½æ¯”整个大表修复花的时间更ž®‘ï¼›</p> <p>3ã€?nbsp; ¾l´æŠ¤è½ÀL¾åQšå¦‚æžœéœ€è¦å¾—å»ø™¡¨åQŒç‹¬äº§ç®¡ç†æ¯ä¸ªå…¬åŒºæ¯”½Ž¡ç†å•个大表要轻村־—多;</p> <p>4ã€?nbsp; 均衡I/OåQšå¯ä»¥æŠŠè¡¨çš„不同分区分配åˆîC¸åŒçš„¼‚ç›˜æ¥åã^è¡¡I/O改善性能åQ?/p> <p>5ã€?nbsp; 改善性能åQšå¯¹å¤§è¡¨çš„æŸ¥è¯¢ã€å¢žåŠ ã€ä¿®æ”¹ç­‰æ“ä½œå¯ä»¥åˆ†è§£åˆ°è¡¨çš„ä¸åŒåˆ†åŒºæ¥òq¶è¡Œæ‰§è¡ŒåQŒå¯ä½¿è¿è¡Œé€Ÿåº¦æ›´å¿«åQŒåœ¨æ•°æ®ä»“库的TP查询特别有用ã€?/p> <p>6ã€?nbsp; 分区对用户透明åQŒæœ€¾lˆç”¨æˆäh„Ÿè§‰ä¸åˆ°åˆ†åŒºçš„存在ã€?/p> <p><br />create tablespace dw1</p> <p>datafile 'D:\oracle\oradata\ora9\dw11.ora' size 50M<br /> </p> <p>create tablespace dw2</p> <p>datafile 'D:\oracle\oradata\ora9\dw21.ora' size 50M</p> <p> </p> <p>一、按范围分区åQšå›ºåæ€ä¹‰ž®±æ˜¯æŒ‰ä¸€å®šrange来分区,看下面的例子:</p> <p>SQL> set linesize 1000</p> <p>SQL> create table niegc_part</p> <p>   (</p> <p>    part_id integer primary key,</p> <p>    part_date date,</p> <p>    part_dec varchar2(100)</p> <p>    )</p> <p>    partition by range(part_date)</p> <p>    (</p> <p>    partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')) tablespace dw1,</p> <p>   partition part_02 values less than(to_date('2007-01-01','yyyy-mm-dd')) tablespace dw2,</p> <p>   partition part_03 values less than(maxvalue) tablespace dw1</p> <p>   );</p> <p> </p> <p>表已创徏ã€?/p> <p> </p> <p>SQL></p> <p>SQL> insert into niegc_part values(1,to_date('2005-12-30','yyyy-mm-dd'),'less 20</p> <p>06-01-01');</p> <p> </p> <p>已创å»?1 行ã€?/p> <p> </p> <p>SQL> commit;</p> <p> </p> <p>提交完成ã€?/p> <p> </p> <p>SQL> insert into niegc_part values(2,to_date('2006-01-01','yyyy-mm-dd'),'equal 2</p> <p>007-01-01');</p> <p> </p> <p>已创å»?1 行ã€?/p> <p> </p> <p>SQL> commit;</p> <p> </p> <p>提交完成ã€?/p> <p> </p> <p>SQL> insert into niegc_part values(3,sysdate,'sysdate');</p> <p> </p> <p>已创å»?1 行ã€?/p> <p> </p> <p>SQL> commit;</p> <p> </p> <p>提交完成ã€?/p> <p> </p> <p>SQL></p> <p>SQL></p> <p>SQL> select * from niegc_part partition(part_01);</p> <p> </p> <p>   PART_ID PART_DATE  PART_DEC</p> <p>---------- ---------- ----------------------------------------------------------</p> <p>         1 30-12æœ?05 less 2006-01-01</p> <p>SQL></p> <p> </p> <p>ç›æ€¿¡åªè¦å¯¹oracle 有点ç†?都能知道上面的range分区的意思了.</p> <p> </p> <p>两个字段以上的range分区大同ž®å¼‚,è¯ïLœ‹ä¸‹é¢çš„例å­?</p> <p>create table niegc_part<br />(<br />part_id integer primary key,<br />part_date date,<br />part_dec varchar2(100)<br />)<br />partition by range(part_id,part_date)<br />(<br />partition part_01 values less than(1,to_date('2006-01-01','yyyy-mm-dd')) tablespace dw,<br />partition part_02 values less than(10,to_date('2007-01-01','yyyy-mm-dd')) tablespace dw,<br />partition part_03 values less than(maxvalue,maxvalue) tablespace dw<br />);<br /> </p> <p> </p> <p>二、Hash分区åQˆæ•£åˆ—分区)ã€?散列分区通过指定分区¾~–号来均匀分布数据的一¿Uåˆ†åŒºç±»åž‹ï¼Œå› äؓ通过在I/O讑֤‡ä¸Šè¿›è¡Œæ•£åˆ—分区,使行˜q™äº›åˆ†åŒºå¤§å°ä¸€è‡´ã€‚如ž®†part_id的数据根据自íw«çš„æƒ…况散列地存攑֜¨æŒ‡å®šçš„三个表½Iºé—´ä¸­ï¼š</p> <p>create table niegc_part</p> <p>(</p> <p>part_id integer primary key,</p> <p>part_date date,</p> <p>part_dec varchar2(100)</p> <p>)</p> <p>partition by hash(part_id)</p> <p>(</p> <p>partition part_01  tablespace dw1,</p> <p>partition part_02  tablespace dw2</p> <p>);</p> <p> </p> <p>¾pȝ»Ÿž®†æŒ‰part_idž®†è®°å½•散列地插入三个分区中,˜q™é‡Œä¹Ÿå°±æ˜¯äºŒä¸ªä¸åŒçš„表空间中ã€?/p> <p> </p> <p>三、复合分区。根据范围分区后åQŒæ¯ä¸ªåˆ†åŒºå†…的数据再散列地分布在几个表空间中åQŒè¿™æ ähˆ‘们就要ä‹É用复合分区。复合分区是先ä‹É用范围分区,然后在每个分区同再ä‹É用散列分区的一¿Uåˆ†åŒºæ–¹æ³•,如将part_date的记录按旉™—´åˆ†åŒºåQŒç„¶åŽæ¯ä¸ªåˆ†åŒÞZ¸­çš„æ•°æ®åˆ†ä¸‰ä¸ªå­åˆ†åŒºï¼Œž®†æ•°æ®æ•£åˆ—地存储在三个指定的表空间中åQ?/p> <p>create table niegc_part</p> <p>(</p> <p>part_id integer primary key,</p> <p>part_date date,</p> <p>part_dec varchar2(100)</p> <p>)</p> <p>partition by range(part_date) subpartition by hash(part_id)</p> <p>subpartitions 2 store in(dw1,dw2)</p> <p>(</p> <p>partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')) tablespace dw1,</p> <p>partition part_02 values less than(to_date('2007-01-01','yyyy-mm-dd')) tablespace dw2,</p> <p>partition part_03 values less than(maxvalue) tablespace dw1</p> <p>);</p> <p><br />先根据part_date˜q›è¡ŒèŒƒå›´åˆ†åŒºåQŒç„¶åŽæ ¹æ®äº¤æ˜“çš„IDž®†è®°å½•散列地存储在二个表½Iºé—´ä¸­ã€?/p> <p> </p> <p> </p> <p>四、烦引分区:</p> <p>注意åQ?å¯ÒŽŸä¸ªå­—ŒDµå·²åšäº†åˆ†åŒºäº†ï¼Œæ˜¯ä¸å…è®¸å†å¾ç«‹çƒ¦å¼•分区的。这一点要非常注意ã€?br />全局索引建立时global子句允许指定索引的范围å€û|¼Œ˜q™ä¸ªèŒƒå›´å€égؓ索引字段的范围å€û|¼š</p> <p>create index idx_part_id on niegc_part(part_dec)</p> <p>global partition by range(part_dec)</p> <p>(</p> <p>partition idx_1 values less than('1000') tablespace dw,</p> <p>partition idx_2 values less than(maxvalue) tablespace dw</p> <p>)</p> <p> </p> <p>局部烦引分区的建立åQšï¼ˆæ³¨æ„åQšè¡¨å¿…须存在分区åQŒæ­¤åˆ†åŒºçš„个数必™åÕd’Œåˆ†åŒºè¡¨çš„åˆ†åŒºä¸ªæ•°ä¸€æ øP¼Œä¸ç„¶æ˜¯å¾ç«‹ä¸èµäh¥çš„)</p> <p>create index idx_part_id on niegc_part(part_dec)</p> <p>local</p> <p>(</p> <p>partition idx_1 tablespace dw1,</p> <p>partition idx_2 tablespace dw2</p> <p>)</p> <p> </p> <p>五、分区维护:(只对范围分区)</p> <p>åQ?åQ‰ã€å¢žåŠ ä¸€ä¸ªåˆ†åŒºï¼šåˆ†åŒºèŒƒå›´åªèƒ½å¾€ä¸Šå¢žåQŒä¸èƒ½å¢žåŠ ä¸€ä¸ªå°‘äºŽåŽŸæœ‰çš„åˆ†åŒºåQ?/p> <p>alter table niegc_part add partition part_03 values less than(maxvalue)</p> <p>åQ?åQ‰ã€åˆòq¶åˆ†åŒºï¼šåQˆåˆòq¶åŽçš„分区必™åÀLŒ‡ä¸‹æœ€åŽä¸€ä¸ªå¤§value的分区)</p> <p>alter table niegc_part merge partitions part_02,part_03 into  partition part_03</p> <p>åQ?åQ‰ã€åˆ é™¤ä¸€ä¸ªåˆ†åŒºï¼š</p> <p>alter table niegc_part drop partition part_01</p> <p> </p> <p><br />分区¾l´æŠ¤åQ?只对范围分区) </p> <p>  åQ?åQ‰ã€å¢žåŠ ä¸€ä¸ªåˆ†åŒºï¼šåˆ†åŒºèŒƒå›´åªèƒ½å¾€ä¸Šå¢žåQŒä¸èƒ½å¢žåŠ ä¸€ä¸ªå°‘äºŽåŽŸæœ‰çš„åˆ†åŒºåQ?</p> <p>  alter table tablename add partition new_partitionname values less than(maxvalue) </p> <p>  åQ?åQ‰ã€åˆòq?拆分分区åQšï¼ˆåˆåƈ后的分区必须指下最后一个大value的分区) </p> <p>  alter table tablename merge partitions partitionname1,partitionname2 into partition partitionname2; </p> <p>  alter table tablename split partition partitionname1 at (xx) into ( </p> <p>  partition newpartition1 ,partition newpartition2) ; </p> <p>  注意åQšxx为分割点 </p> <p>  åQ?åQ‰ã€åˆ é™¤ä¸€ä¸ªåˆ†åŒºï¼š </p> <p>  alter table niegc_part drop partition partitionname; </p> <p>  (4)ž®†åˆ†åŒºæ”¹å?</p> <p>  alter table table_name rename Partition partition_name to partition_name </p> <p>  (5)ž®†åˆ†åŒºæ”¹è¡¨ç©ºé—?</p> <p>  alter table table_name move partition_name </p> <p>  tablespace tablespace_name nologging </p> <p>  (6)查询特定分区 </p> <p>  select count(*) from table_name partition (partition_name); </p> <p>  (7)æ·ÕdŠ æ•°æ® </p> <p>  insert into table_name select * from table_name partition (partition_name) </p> <p>  (8)分区表的导出 </p> <p>  userid=USER/PWD </p> <p>  buffer=102400 </p> <p>  tables=table_name:partition_name, </p> <p>  file=E:exp_paraxxx.dmp </p> <p>  log=E:exp_paraxxx.log </p> <p>  (9)技巧:删除表中一个字ŒD?</p> <p>  alter table table_name set unused column column_name; </p> <p>  (10)加一个字ŒD?</p> <p>  alter table table_name add column_name number(1);  <br /><br /><br /><br /><br /><a >http://www.cnblogs.com/rootq/archive/2008/12/24/1361631.html</a></p></div><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/387568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-09-12 16:53 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle type(一)http://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387354.htmlabinabinSun, 09 Sep 2012 14:37:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387354.htmlhttp://www.aygfsteel.com/stevenjohn/comments/387354.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387354.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/387354.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/387354.html自定义类型:
create or replace type mytype as object(
id int,
name varchar(20)
)

廸™¡¨ä½¿ç”¨åˆšåˆšå®šä¹‰çš„mytypeåQ?br />create table MYTYPETABLE
(
  ID     NUMBER,
  PERSON MYTYPE
)


相表里面插入数据åQ?br />insert into mytypetable values (1,mytype(2,'abin'))


查找数据åQ?br />select t.id,t.person.id,t.person.name from mytypetable t



]]>oracle sys_refcursor cursor http://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387347.htmlabinabinSun, 09 Sep 2012 11:55:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387347.htmlhttp://www.aygfsteel.com/stevenjohn/comments/387347.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387347.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/387347.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/387347.html
-- Create table
create table ABIN
(
  ID         NVARCHAR2(50),
  NAME       VARCHAR2(30),
  SID        VARCHAR2(180),
  CREATETIME NVARCHAR2(20)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate indexes 
create index AID on ABIN (ID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create unique index ALLINDEX on ABIN (ID, NAME, SID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create unique index USID on ABIN (SID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );



-- Create table
create table LEE
(
  ID   NVARCHAR2(50) not null,
  NAME VARCHAR2(30),
  SID  VARCHAR2(180)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table LEE
  add constraint SSSSSID primary key (ID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );



-- Create table
create table LI
(
  ID   NVARCHAR2(50) not null,
  NAME VARCHAR2(30),
  SID  VARCHAR2(180)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table LI
  add constraint TTTID primary key (ID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );



create or replace procedure getProcess(tdate date,tid nvarchar2,tname varchar2)
as
mydate date;
v_sql varchar2(4000);
ssid varchar2(180):='';
cursor mycur is select * from lee where name=tname;
myrow lee%rowtype;
shecur sys_refcursor;
myexception EXCEPTION;
mysqlcode nvarchar2(50);
mysqlerrm varchar2(180);
jdate abin.createtime%type;
type hcur is ref cursor ;
hecur hcur;
herow li%rowtype;
begin
     if(tid=1) then
               begin
                  select to_date(to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd HH24:mi:ss') into mydate from dual;
                  jdate:=to_char(mydate,'yyyy-MM-dd HH24:mi:ss');
                  dbms_output.put_line(jdate);
               end;
               if(to_char(tdate,'yyyy-MM-dd')=to_char(sysdate,'yyyy-MM-dd'))then
                       begin
                            dbms_output.put_line('this current tname is: '||tname);
                            select sid into ssid from lee where name=tname;
                            dbms_output.put_line('this current sid is: '||ssid);
                            if(ssid is not null)then  
                                v_sql:='insert into abin (id,name,sid,createtime) values ('''||tid||''','''||tname||''','''||ssid||''','''||jdate||''')';    
                                dbms_output.put_line('v_sql='||v_sql);
                                execute immediate v_sql;
                                 dbms_output.put_line(' execute immediate v_sql='||v_sql);
                                commit;
                            end if;
                       end;
                       dbms_output.put_line('this input equals');
               end if;
               if(to_char(tdate,'yyyy-MM-dd')=to_char(sysdate-1,'yyyy-MM-dd'))then
                       begin
                            select sid into ssid from li where name=tname;
                            if(ssid is not null)then
                                v_sql:='insert into abin (id,name,sid,createtime)values ('''||tid||''','''||tname||''','''||ssid||''','''||jdate||''')';    
                                execute immediate v_sql;
                                commit;          
                            end if;       
                       end;
                       dbms_output.put_line(' this input not equals ');
               end if;
     end if;
     if(tid=2) then
          begin
                select to_date(to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd HH24:mi:ss') into mydate from dual;
                jdate:=to_char(mydate,'yyyy-MM-dd HH24:mi:ss');
                dbms_output.put_line(jdate);
          end;
          dbms_output.put_line('tid :'||tid);
          open mycur;
          loop
          fetch mycur into myrow;
                ssid:=myrow.sid;
                dbms_output.put_line('ssid :'||ssid);
                if(ssid is not null)then
                      v_sql:='insert into abin (id,name,sid,createtime)values ('''||tid||''','''||tname||''','''||ssid||''','''||jdate||''')';    
                      dbms_output.put_line('v_sql :'||v_sql);
                      execute immediate v_sql;
                      dbms_output.put_line('execute immediate v_sql :'||v_sql);
                      commit; 
                end if;
          exit when mycur%NOTFOUND;
          end loop;
          if mycur%isopen then
          close mycur;   
          end if; 
     end if;  
     if(tid=3) then
          begin
                select to_date(to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd HH24:mi:ss') into mydate from dual;
                jdate:=to_char(mydate,'yyyy-MM-dd HH24:mi:ss');
                dbms_output.put_line(jdate);
          end;
          v_sql:='select * from li where name=:1';
          open shecur for v_sql using tname;
               loop
               fetch shecur into myrow ;   
               ssid:=myrow.sid;
               if(ssid is not null)then
                    v_sql:='insert into abin (id,name,sid,createtime)values ('''||tid||''','''||tname||''','''||ssid||''','''||jdate||''')';    
                    execute immediate v_sql;
                    commit;
               end if;
               exit when shecur%NOTFOUND;
               end loop;
               if shecur%isopen then
                  close shecur;
               end if;
     end if;
     if(tid=4)then
          begin
              select to_date(to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd HH24:mi:ss') into mydate from dual;
              jdate:=to_char(mydate,'yyyy-MM-dd HH24:mi:ss');
              dbms_output.put_line(jdate);
          end;
          v_sql:='select * from li t where t.name=:1';
          open hecur for v_sql using tname;
          loop 
               fetch hecur into herow;
               ssid:=herow.sid;
               if(ssid is not null)then
                    v_sql:='insert into abin (id,name,sid,createtime)values ('''||tid||''','''||tname||''','''||ssid||''','''||jdate||''')';    
                    execute immediate v_sql;
                    commit;  
               end if;
          exit when hecur%NOTFOUND;
          end loop;
          if(hecur%isopen)then
              close hecur;
          end if;     
          
     end if;
     if(tid=5)then
         RAISE myexception;
     end if;
     exception   
         when myexception then
           mysqlcode:=SQLCODE;
           mysqlerrm:=SQLERRM; 
           begin
                select to_date(to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd HH24:mi:ss') into mydate from dual;
                jdate:=to_char(mydate,'yyyy-MM-dd HH24:mi:ss');
                dbms_output.put_line(jdate);
           end;
           begin
               v_sql:='insert into abin(id,name,sid,createtime) values ('''||mysqlcode||''','''||tname||''','''||mysqlerrm||''','''||jdate||''')';
               dbms_output.put_line('v_sql='||v_sql);
               execute immediate v_sql;
               commit;
           end;
           when others then
               rollback;
end;



‹¹‹è¯•代码åQ?br />
declare
mydate date:=to_date('2012-09-09','yyyy-MM-dd');
tid nvarchar2(50):='4';
tname varchar2(30):='abin';
begin
       getProcess(mydate,tid,tname);
end;



]]>Oracle 游标˜q”回¾l“æžœé›?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/09/06/387204.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Thu, 06 Sep 2012 15:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/09/06/387204.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/387204.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/09/06/387204.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/387204.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/387204.html</trackback:ping><description><![CDATA[有俩¿Uæ–¹æ³?<br />一¿Uæ˜¯å£°æ˜Ž¾pȝ»Ÿæ¸¸æ ‡,一¿Uæ˜¯å£°æ˜Žè‡ªå®šä¹‰æ¸¸æ ?然后后面操作一æ ?参数¾cÕdž‹ä¸?br />in out 或out<br />(1)声明个äh¾pȝ»Ÿæ¸¸æ ‡.(推荐)<br />create or replace p_temp_procedure<br />(<br />    cur_arg out sys_refcursor;     --æ–ÒŽ³•1<br />)<br />begin<br />    open cur_arg for select * from tablename;<br />end<br />调用<br />declare<br />    cur_calling sys_refcursor;<br />begin<br />    p_temp_procedure(cur_calling);  --˜q™æ ·˜q™ä¸ªæ¸¸æ ‡ž®±æœ‰å€égº†<br />    for rec_next in cur_calling loop<br />     ....<br />    end loop;<br />end;<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />create or replace procedure getList(id in varchar2,mycur out sys_refcursor)<br />is<br />v_sql varchar2(4000);<br />begin<br />dbms_output.put_line('call it success');<br />v_sql:='select * from userbean s where s.id=:1';<br />open mycur for v_sql using id;<br />commit;<br />end;<br /><br /><br /><br />create or replace procedure my_procedure<br />(mypageNo number,mypageSize number,myInfo_Cursor out sys_refcursor)<br />as<br />pageNO number;<br />pageSize number;<br /><br />begin <br />open myInfo_Cursor for <br />select * from product <br />where pid between 1 + (pageNo - 1) * pageSize and 4 + (pageNo - 1) * pageSize;<br /><br />end;<br /><br /><br /><br /><br />declare <br />my_cursor sys_refcursor;<br />begin<br />my_procedure(1,2,my_cursor);<br />for rec_next in my_cursor loop<br />dbms_output.put_line('pid:'||rec_next.pid||'  ptypeid:'||rec_next.ptypeid||'  proname:'||rec_next.proname||'  price:'||rec_next.price||'  pronum:'||rec_next.pronum);<br />end loop;<br />end;<img src ="http://www.aygfsteel.com/stevenjohn/aggbug/387204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-09-06 23:30 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/09/06/387204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle sys_refcursorhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/15/385502.htmlabinabinTue, 14 Aug 2012 16:57:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/08/15/385502.htmlhttp://www.aygfsteel.com/stevenjohn/comments/385502.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/15/385502.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/385502.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/385502.htmlcreate table ABING1
(
  ID         INTEGER not null,
  CREATETIME DATE default sysdate not null,
  FIRSTNAME  NVARCHAR2(100) not null,
  LASTNAME   CLOB not null,
  MIDDLENAME NCLOB not null
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints
alter table ABING1
  add constraint PK_ABING primary key (ID)
  using index
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );




create or replace procedure abin55(abing in varchar2,abin out sys_refcursor)
as
begin
declare
createtime date:=to_date(abing,'yyyy:MM:dd HH24:MI:SS');
cursor mycur is select * from abing1 t where t.createtime=createtime;
abin mycur%rowtype;
begin
open mycur;
loop
     fetch mycur into abin;
     exit when mycur%NOTFOUND;
end loop;
close mycur;
end;
end;


]]>
我的½W¬ä¸€ä¸ªoracle triggerhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/14/385434.htmlabinabinMon, 13 Aug 2012 16:01:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/08/14/385434.htmlhttp://www.aygfsteel.com/stevenjohn/comments/385434.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/14/385434.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/385434.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/385434.html-- Create table
create table EMP
(
  ID         NUMBER,
  ENAME      VARCHAR2(50),
  EMPNO      VARCHAR2(50),
  SALARY     NUMBER(10),
  DEPTNO     VARCHAR2(50),
  CREATETIME DATE default sysdate
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );


建立历史表:
create table emp_his as select * from emp where 1=2



建立oracle触发器:
create or replace trigger tri_del_emp
before delete on emp
for each row
begin
insert into emp_his(id,ename,empno,salary,deptno,createtime) values
(:old.id,:old.ename,:old.empno,:old.salary,:old.deptno,:old.createtime);
end;


执行‹¹‹è¯•操作åQ?br />delete emp where id=8

˜q™ä¸ªæ—¶å€™ï¼ŒåŽ†å²è¡¨ï¼Œä¿¡æ¯å·²ç»æ’å…¥˜q›åŽ»äº†ï¼Œå‘µå‘µ




]]>
oracle function异常http://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385433.htmlabinabinMon, 13 Aug 2012 15:34:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385433.htmlhttp://www.aygfsteel.com/stevenjohn/comments/385433.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385433.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/385433.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/385433.html建立异常表:

-- Create table
create table ORACLEEXCEPTION
(
  ID          VARCHAR2(36),
  CREATETIME  DATE,
  SQLCODE1    NVARCHAR2(300),
  SQLERRM1    NVARCHAR2(300),
  MYEXCEPTION NVARCHAR2(100)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

 

 

¾~–写oracle--functionåQ?/p>

create or replace function getabin(abin in varchar2)
return varchar2
is
result varchar2(50);
sqlcode2 nvarchar2(500):='';
sqlerrm2 nvarchar2(500):='';
myexception nvarchar2(500):='';
exception1 exception;
begin
if(abin is not null) then
select count(1) into result from bing1 t where t.name1 like abin;
return(result);
elsif(abin is null) then
result:='there is a defined exception';
raise exception1;
end if;

exception
when exception1 then
sqlcode2:=sqlcode;
sqlerrm2:=sqlerrm;
begin
insert into oracleexception(id,createtime,sqlcode1,sqlerrm1,myexception) values (sys_guid(),sysdate,sqlcode2,sqlerrm2,'exception1');
commit;
end;
return(result);
when others then
result:='there is a other exception';
sqlcode2:=sqlcode;
sqlerrm2:=sqlerrm;
begin
insert into oracleexception(id,createtime,sqlcode1,sqlerrm1,myexception) values (sys_guid(),sysdate,sqlcode2,sqlerrm2,'others');
commit;
end;
return(result);
end;

 

 

 

‹¹‹è¯•oracle--function代码åQ?/p>

declare 
ename varchar2(50):='';
result varchar2(50);
begin
result:=getabin(ename);
dbms_output.put_line(result);
end;

 



]]>
oracle 存储˜q‡ç¨‹å¼‚常åQŒè§¦å‘器http://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385345.htmlabinabinSun, 12 Aug 2012 17:10:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385345.htmlhttp://www.aygfsteel.com/stevenjohn/comments/385345.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385345.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/385345.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/385345.htmlhttp://hi.baidu.com/mylin/blog/item/5a3ca6c2b321fd0c0ef4779b.html

ORACLE PL/SQL¾~–程之八åQ?

把触发器说�
http://www.cnblogs.com/huyong/archive/2011/04/27/2030466.html



]]>
我写的oracle functionhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/12/385325.htmlabinabinSun, 12 Aug 2012 13:01:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/08/12/385325.htmlhttp://www.aygfsteel.com/stevenjohn/comments/385325.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/12/385325.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/385325.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/385325.htmlcreate or replace function getBin
return varchar2
is
result varchar2(50);
begin
select count(1) into result from bing1;
return(result);
end;

‹¹‹è¯•代码åQ?br />declare
result varchar2(50);
begin
result:=getBin;
dbms_output.put_line(result);
end;

oracle函数二:
create or replace function getBin3(ename in varchar2)
return varchar2
is
result varchar(50);
begin
select count(1) into result from bing1 t where t.name1 like '%'||ename||'%';
return(result);
end;

‹¹‹è¯•代码二:
declare
result varchar2(50);
ename varchar2(10):='a';
begin
result:=getBin3(ename);
dbms_output.put_line(result);
end;




]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÍÅ·çÏØ| ´ó¹ØÏØ| á·É½ÏØ| µÇúÏØ| ¹ó¸ÛÊÐ| ³çÎÄÇø| °ÄÃÅ| л¯ÏØ| ÕżҸÛÊÐ| ºÏɽÊÐ| ¼Ò¾Ó| ÓÎÏ·| ÂÖÌ¨ÏØ| º¼½õºóÆì| ÓéÀÖ| ÓñÁú| ÁººÓÏØ| ´Ó½­ÏØ| À³ÎßÊÐ| Ì©ÐËÊÐ| É̶¼ÏØ| ͨº£ÏØ| ´óÓ¢ÏØ| ÆîÃÅÏØ| º£êÌÏØ| ÈýÃÅÏØ| »¨Á«ÏØ| º«³ÇÊÐ| Ðû¶÷ÏØ| Ç­Î÷| »ÆÉ½ÊÐ| ½­»ª| ÔæÇ¿ÏØ| ÌÆºÓÏØ| ƽÀÖÏØ| ²ý¶¼ÏØ| ¶þÁ¬ºÆÌØÊÐ| ¸»Ë³ÏØ| Áúʤ| ÄϽ§| ÍпËÑ·ÏØ|