jdbcµ÷ÓÃoracle function·µ»Ø½á¹û¼¯
ÉêÃ÷oracleº¯Êý£¬¼°Æä½á¹û¼¯½á¹¹
½á¹û¼¯±ØÐëΪȫ¾ÖµÄ¡¢table of ²»ÄÜÓÃindex by
CREATE OR REPLACE TYPE EMPARRAY is object (corporationId number)£»
CREATE OR REPLACE TYPE EMPARRAY2 is table of EMPARRAY£»
create or replace function func_empl return sys_refcursor is
Result sys_refcursor;
list emparray2 := emparray2();
item emparray ;
begin
select 1 into item.corporationId from dual;
list.extend;
list(list.count) := item;
item.corporationId := 2;
list.extend;
list(list.count) := item;
item.corporationId := 3;
list.extend;
list(list.count) := item;
OPEN Result FOR
SELECT * from TABLE(cast(list as emparray2));
return(Result);
end func_empl;
»ñÈ¡·µ»ØÓαꡣ
public void callFuncQuery(String sql, RowCallbackHandler rch,
String returnType) throws DataAccessObjectException {
Connection con = null;
CallableStatement cstmt = null;
ResultSet rs = null;
logger.info(sql);
try {
con = getDataSource().getConnection();
cstmt = con.prepareCall(sql);
//ÊÊÓÃÓÚÊý×é
//cstmt.registerOutParameter(1, OracleTypes.ARRAY, returnType);
//cstmt.registerOutParameter(1, OracleTypes.STRUCT, returnType);
//ÊÊÓÃÓÚÓαê
cstmt.registerOutParameter(1, OracleTypes.CURSOR);
cstmt.executeUpdate();
/*Array out=cstmt.;
System.out.println("Array is of type "
+ out.getBaseTypeName());
System.out.println("Array element is of type code "
+ out.getBaseType());*/
rs = (ResultSet)cstmt.getObject(1);
while (rs.next()) {
rch.processRow(rs);
}
} catch (SQLException e) {
throw new DataAccessObjectException(e);
} finally {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (cstmt != null) {
cstmt.close();
cstmt = null;
}
if (con != null) {
con.close();
con = null;
}
} catch (SQLException e) {
throw new DataAccessObjectException(e);
}
}
Ïà¹ØÎĵµ£º
ÔÚÒ»°ãµÄPL/SQL³ÌÐò¿ª·¢ÖУ¬¿ÉÒÔʹÓÃSQLµÄDMLÓï¾äºÍÊÂÎñ¿ØÖÆÓï¾ä£¬µ«ÊÇDDLÓï¾ä¼°»á»°Óï¾äÈ´²»ÄÜÔÚPL/SQLÖÐÖ±½ÓʹÓã¬ÒªÏëʵÏÖÔÚPL/SQLÖÐʹÓÃDDLÓï¾ä¼°»á»°¿ØÖÆÓï¾ä£¬¿ÉÒÔͨ¹ý¶¯Ì¬SQLÀ´ÊµÏÖ¡£
Ëùν¶¯Ì¬SQLÊÇÖ¸ÔÚPL/SQL¿é±àÒëʱSQLÓï¾äÊDz»È·¶¨µÄ£¬ÀýÈç¸ù¾ÝÓû§ÊäÈë²ÎÊýµÄ²»Í¬¶ø ......
°¸Àý˵Ã÷£º
ÓÐA,BÁ½Ì¨oracleÊý¾Ý¿â£¬¶¼Îª10g,ÏÖÔÚÓÐÒ»¸öAÊý¾Ý¿âÖÐone±íµÄ¼¸ÌõÊý¾ÝÒª²åÈëµ½BÊý¾Ý¿âÖеÄone±í£¿
ÔÚÍøÉϲéÔÄÁËһϣ¬¿ÉÒÔͨ¹ýÔÚAÉϽ¨Á¢dblink£¬µ±È»ÔÚB»úÉϽ¨Á¢Ò²ÊÇÒ»ÑùµÄ¡£
´ò¿ªsqlplusÖÕ¶Ë£¬»òÕßÈÎÒâµÄoracle¿Í»§¶Ë»·¾³£¬Ö´ÐÐÒÔÏÂSQL
create database link Á´½ÓÃû
¡¡connect t ......
ÔÚ°²×°oracleµÄDBCA¹ý³ÌÖУ¬ÔÚ´´½¨²¢Æô¶¯oracleʵÀý£¨´´½¨¿Ë¡Êý¾Ý¿â£¬½ø¶ÈÌõÔÚ45%£©¾Í½øÐв»ÏÂÈ¥ÁË£¬ÖØ×°Á˼¸´ÎÖÕÓÚÕÒµ½ÎÊÌâµÄÖ¢½áÁË£¬½â¾ö¹ý³ÌÈçÏ£º
1¡¢×°Á˼¸±é¾ÍÊÇÄǸöÎÊÌ⣬ÎÒͻȻÏëµ½Òª¿´¿´°²×°ÈÕÖ¾¡£
2¡¢ÊÇÔÚ´´½ ......
oracle11g¾ßÓÐ×Ô¶¯µÄ±íѹËõ¹¦ÄÜ£¬ µ«µ±insertÓï¾äδָ¶¨¾ßÌåµÄÁÐÃûʱ£¬ »áʹÓÃ×Ô¶¯±íѹËõ¹¦ÄÜʧЧ¡£(Èç¸ÃÓï¾ä»áʹµÃ±ít_test²»ÄÜ×Ô¶¯Ñ¹Ëõ: insert into t_test select * from t_test2)
ÁíÍâʹÓÃһЩÍⲿ¹¤¾ß½øÐÐÊý¾Ý×°ÔØ(sqlload)£¬Ò²ÓпÉÄÜʹµÃ±í²»ÄÜ×Ô¶¯Ñ¹Ëõ£¬´ËʱÐèÒªÓÃÒÔÏÂÓï¾ä£¬ÒÔÖØÐ·ÖÎö±í£¬·ÖÎöÍê³ÉÖ®ºó£¬¸Ã±í¼´»á ......
ÎÄÕÂÌáµ½£¬ÓÃCache hit ratioµÄ·½·¨À´¼ì²éORACLEÐÔÄÜÎÊÌâ¹ýʱÁË£¬ÀïÃæÓоä·Ç³£ÐÎÏóµÄ»°£ºÕâÎÞÒìÓÚÒ»¸öÒ½ÉúÖ»ÖªµÀ¸ù¾ÝѪѹµÄÀ´ÖÎÁƲ¡ÈË£¬¶ø²¡ÈËÓÉÓÚÌÛÍ´£¬Éñ¾ÐË·Ü£¬ÑªÑ¹ÔÚÒ»¸öºÏÀíµÄ·¶Î§ÄÚ£¬Ò½ÉúÈ´¸æËß»¼Õߣ¬Äãû²¡£¬µÈÄãѪѹµÍµÄʱºòÔÙÀ´¡£Í¬ÑùµÄ£¬ÎÒÃDz»Äܽö½ö¸ù¾ÝCache hit ratioÀ´ÅжÏORACLEÊ ......