<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Atea - Hero's Grave

    面向?qū)ο?,開(kāi)源,框架,敏捷,云計(jì)算,NoSQL,商業(yè)智能,編程思想。

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      40 隨筆 :: 0 文章 :: 28 評(píng)論 :: 0 Trackbacks
    PACKAGE分為HEADER和BODY部分。

    HEADER
     1 CREATE OR REPLACE PACKAGE PACKAGE_NAME IS
     2 
     3 --PUBLIC PROPERTY
     4 TYPE LISTDATA_CURSOR IS REF CURSOR;
     5 
     6 --PUBLIC FUNCTION
     7 FUNCTION FUNCTION_NAME
     8 (
     9     --Out Parameter
    10     PO_varErrCd     OUT VARCHAR2,  --例: TABLENAME.COLUMN%TYPE
    11     PO_varErrMsg    OUT VARCHAR2,
    12     --In Parameter
    13     PI_varName      IN  VARCHAR2
    14 )
    15 RETURN LISTDATA_CURSOR; --return type,例: CURSOR
    16 
    17 END;
    18 /

    BODY
     1 CREATE OR REPLACE PACKAGE BODY PACKAGE_NAME IS
     2 FUNCTION FUNCTION_NAME
     3 (
     4     PO_varErrCd     OUT VARCHAR2,
     5     PO_varErrMsg    OUT VARCHAR2,
     6     PI_varName      IN  VARCHAR2
     7 )
     8 RETURN LISTDATA_CURSOR  IS
     9 
    10     TYPE TYP_Cur IS REF CURSOR;
    11     curGetList TYP_Cur;
    12 
    13 BEGIN
    14 
    15     OPEN curGetList FOR --open CURSOR
    16         SELECT
    17             TABLE_NAME.COLUMN_NAME1,
    18             TABLE_NAME.COLUMN_NAME2
    19         FROM
    20             TABLE_NAME
    21         WHERE
    22             TABLE_NAME.COLUMN_NAME3 = PI_varName
    23     RETURN  curGetList; --return CURSOR,相當(dāng)于返回了一個(gè)結(jié)果集
    24 
    25 EXCEPTION
    26     WHEN OTHERS THEN
    27         PO_varErrCd     :=  SQLCODE;
    28         PO_varErrMsg    :=  SQLERRM;
    29         IF curGetList%ISOPEN THEN
    30             CLOSE curGetList;
    31         END IF;
    32         RETURN NULL;
    33 END FUNCTION_NAME;
    34 
    35 END;
    36 /

    用OJDBC調(diào)用的方法
     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.Types;
     4 
     5 import oracle.jdbc.OracleTypes;
     6 import oracle.jdbc.driver.OracleCallableStatement;
     7 import oracle.jdbc.driver.OracleResultSet;
     8 
     9 public class MyTest {
    10 
    11     private static Connection con;
    12 
    13     public static void main(String[] args) throws Exception {
    14 
    15         String connect = "jdbc:oracle:thin:@IP:PORT:DOMAIN_NAME";
    16         Class.forName("oracle.jdbc.driver.OracleDriver");
    17         con = DriverManager.getConnection(connect, "USERNAME""PSW");
    18 
    19         test();
    20     }
    21 
    22     public static void test() throws Exception {
    23 
    24         OracleCallableStatement stmt = null;
    25         OracleResultSet ors = null;
    26 
    27         try {
    28             String strSql = "{? = call PACKAGE_NAME.FUNCTION_NAME( ?, ?, ? ) }";
    29             stmt = (OracleCallableStatement) con.prepareCall(strSql);
    30 
    31             // set result type
    32             stmt.registerOutParameter(1, OracleTypes.CURSOR);
    33             stmt.registerOutParameter(2, Types.VARCHAR);
    34             stmt.registerOutParameter(3, Types.VARCHAR);
    35 
    36             // set condition
    37             stmt.setString(4"CONDITION_VALUE");
    38 
    39             stmt.execute();
    40             ors = (OracleResultSet) stmt.getCursor(1);
    41 
    42             while (ors.next()) {
    43                 System.out.print(ors.getString("COLUMN_NAME1"+ " ");
    44                 System.out.print(ors.getString("COLUMN_NAME2"+ " ");
    45                 System.out.println();
    46             }
    47         } finally {
    48             if (ors != null) {
    49                 ors.close();
    50             }
    51             if (stmt != null) {
    52                 stmt.close();
    53             }
    54             if (con != null) {
    55                 con.close();
    56             }
    57         }
    58     }
    59 }

    用FUNCTION調(diào)用的方法
     1 CREATE OR REPLACE FUNCTION FUNCTION_NAME
     2 RETURN BOOLEAN
     3 IS
     4     TYPE TYP_Cur IS REF CURSOR;
     5     curGetList TYP_Cur;
     6 
     7     PO_varErrCd CHARACTER;
     8     PO_varErrMsg CHARACTER;
     9 
    10     --定義接收游標(biāo)返回項(xiàng)目的變量
    11     --變量的數(shù)量要和游標(biāo)返回項(xiàng)目的數(shù)量一致
    12     --接收單條數(shù)據(jù)
    13     varA TABLE_NAME.COLUMN_NAME1%TYPE;
    14     varB TABLE_NAME.COLUMN_NAME2%TYPE;
    15     --接收多條數(shù)據(jù)
    16     TYPE tableNameArray1 IS TABLE OF TABLE_NAME.COLUMN_NAME1%TYPE
    17         INDEX BY BINARY_INTEGER;
    18     tableName1  tableNameArray1;
    19     TYPE tableNameArray2 IS TABLE OF TABLE_NAME.COLUMN_NAME2%TYPE
    20         INDEX BY BINARY_INTEGER;
    21     tableName2  tableNameArray2;
    22     intCount INTEGER:=0;
    23 
    24 BEGIN
    25 
    26     curGetList := PACKAGE_NAME.FUNCTION_NAME(PO_varErrCd, PO_varErrMsg, 'CONDITION_VALUE');
    27     LOOP
    28         EXIT WHEN curGetList%NOTFOUND;
    29 
    30         --FETCH curGetList INTO varA,varB;
    31         --DBMS_OUTPUT.put_line(varA || ' ' || varB);
    32 
    33         FETCH curGetList INTO tableName1(intCount),tableName2(intCount);
    34         intCount := intCount + 1;
    35     END LOOP;
    36 
    37     --FOR i IN 1..tableName1.COUNT LOOP
    38     FOR i IN 1..intCount LOOP
    39         DBMS_OUTPUT.put_line(tableName1(i-1));
    40         DBMS_OUTPUT.put_line(tableName2(i-1));
    41     END LOOP;
    42 
    43     CLOSE curGetList;
    44     RETURN  TRUE;
    45 
    46 EXCEPTION
    47     --
    48 END;
    49 /

    posted on 2008-12-26 20:22 Atea 閱讀(359) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Database
    主站蜘蛛池模板: 国产h视频在线观看网站免费| 国产成人精品日本亚洲语音 | a成人毛片免费观看| 我想看一级毛片免费的| 亚洲人成综合在线播放| 亚洲视频免费在线看| 亚洲黄色免费电影| 91精品国产免费入口| 亚洲国产成人精品无码区在线秒播 | 四虎成人免费网址在线| 狠狠色香婷婷久久亚洲精品| 野花高清在线电影观看免费视频| 亚洲日韩乱码中文无码蜜桃| 国产免费毛不卡片| 亚洲精品无码久久久久APP | 免费中文字幕视频| 亚洲视频在线一区二区| 一区二区免费在线观看| 亚洲色偷拍区另类无码专区| www免费黄色网| 亚洲AV成人一区二区三区AV| 91青青青国产在观免费影视| 亚洲免费在线观看视频| 成人免费无码大片A毛片抽搐色欲| 亚洲国产精品成人综合色在线| 国产国产人免费视频成69大陆| 牛牛在线精品免费视频观看| 亚洲欧洲精品无码AV| 免费视频爱爱太爽了| 国产AV旡码专区亚洲AV苍井空| 免费国产美女爽到喷出水来视频| 国产精品免费观看视频| 亚洲精品在线观看视频| 免费无码又爽又刺激高潮的视频 | 91精品国产亚洲爽啪在线影院 | 亚洲Av无码一区二区二三区| jizz在线免费播放| 久久亚洲精品国产精品| 日韩免费视频观看| a毛片免费观看完整| 亚洲一区二区观看播放|