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

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

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

    posts - 0,  comments - 6,  trackbacks - 0

    數據采用oracle數據庫scott/tiger示范賬戶下的emp(員工)dept(部門)表:

    create table DEPT

    (

      DEPTNO NUMBER(2) not null primary key,

      DNAME  VARCHAR2(14),

      LOC    VARCHAR2(13)

    )


    create table EMP

    (

      EMPNO      NUMBER(4) not null  primary key,

      ENAME      VARCHAR2(10),

      JOB        VARCHAR2(9),

      MGR        NUMBER(4),

      HIREDATE   DATE,

      SAL        NUMBER(7,2),

      COMM       NUMBER(7,2),

      DEPTNO     NUMBER(2),

      constraint FK_DEPTNO foreign key (DEPTNO)references DEPT (DEPTNO)

    )


    Oracle存儲過程代碼:

    Create or replace PROCEDURE searchEmpByDept(

           indeptno IN NUMBER,

           empcur OUT sys_refcursor,

           errorMsg OUT varchar)

    IS

    BEGIN

        errorMsg:='';

        OPEN empcur FOR

          SELECT *

          FROM emp

          WHERE deptno = indeptno

          ORDER BY empno;

      EXCEPTION

        WHEN OTHERS THEN

          errorMsg:= sqlerrm;-- sqlcode是異常編號,sqlerrm是異常的詳細信息

    END searchEmpByDept; 


    使用 pl/sql 過程語句測試上面的存儲過程: 

    declare 

    errorMsg  varchar(1000);

    empcur sys_refcursor;

    emp scott.emp%rowtype; 

    begin

       searchEmpByDept(10,empcur, errorMsg);

       if errorMsg is not null then

          dbms_output.put_line(errorMsg);

       end if;

       

       loop

          fetch empcur into emp;

          EXIT WHEN empcur%notfound ; 

          dbms_output.put_line(emp.ename);

       end loop;

       

       close  empcur;

    end;


    Java調用代碼:

    public class DBHelper  {

        private Connection conn = null;

        public Connection getConnection() throws ClassNotFoundException, SQLException {

            Class.forName("oracle.jdbc.driver.OracleDriver");

            conn = DriverManager.getConnection(

                "jdbc:oracle:thin:@192.168.1.6:1521:ntcsoft"

                "scott",

                "tiger");

            return conn;

        }

    }


    public class CallOracleProcedure {

      public static void main(String args[]) {

        ResultSet rs = null;

        CallableStatement st = null;

        Connection con =  null;

        try {

        con = new DBHelper().getConnection();

        String sql = "call searchEmpByDept(?,?,?)";

        st = con.prepareCall(sql);

        st.setInt(1, 20);//設置入參部門編號20

        //注冊返回類型參數。CURSOR類型在java.sql.Tyes中沒有定義,在驅動程序包中找到了

        st.registerOutParameter(2, oracle.jdbc.driver.OracleTypes.CURSOR);

        st.registerOutParameter(3, Types.VARCHAR);

        boolean result = st.execute();

        //獲取返回參數

        rs = (ResultSet) st.getObject(2);

        String msg = st.getString(3);

        if(msg != null)

           System.out.println(msg);//異常信息部為null則打印

        System.out.println("empno" + ""t" + "ename" + ""t" + "sal" + ""t""deptno");

        //輸出查詢結果

        StringBuilder output = new StringBuilder();

        while (rs.next()) {

            output.append(rs.getInt("empno"))

            .append(""t")

            .append(rs.getString("ename"))

            .append(""t")

            .append(rs.getDouble("sal"))

            .append(""t")

            .append(rs.getInt("deptno"));

            System.out.println(output.toString());

            output.delete(0, output.length());

        }

        output = null;

        }catch (Exception e) {

           e.printStackTrace();

        }finally{

        try {

           if(rs!=null) rs.close();

           if(st!=null) st.close();

           if(con!=null) con.close();

        } catch (SQLException e) {

            e.printStackTrace();

        }

        }

      }

    }


    注意,oracle數據庫的scott示范賬戶默認是被鎖定的,在使用之前需要解鎖:

    alter user scott account unlock;

    然后以scott/tiger 登陸數據庫服務器,會提示密碼已過期,并要求你立即輸入新密碼。


    學軟件開發,到蜂鳥科技!                   

    地址:鄭州市文化路豐產路口東50米豐產路21SOHO世紀城西塔20

    電話:0371-63839606  手機:13838505572(申老師) 13673990036 (許老師)

    QQ: 1073422643  1群:47614738 2群:108157678  鄭州軟件開發興趣小組群:38236716

    網址:www.ntcsoft.com

    posted on 2010-09-16 21:45 whistler 閱讀(2854) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(2)

    我參與的團隊

    文章檔案(22)

    搜索

    •  

    最新評論

    主站蜘蛛池模板: 日韩精品无码免费专区网站| 中文字幕视频免费| 伊人久久大香线蕉亚洲五月天| 久久久久国色AV免费观看| 99久久亚洲综合精品成人网| 无码人妻久久一区二区三区免费丨 | 亚洲免费在线视频| 免费羞羞视频网站| 你懂的在线免费观看| 无码人妻一区二区三区免费| 男女交性无遮挡免费视频| 亚洲产国偷V产偷V自拍色戒| 国产香蕉九九久久精品免费| 亚洲老熟女@TubeumTV| 国产精品国产免费无码专区不卡| 亚洲国产精品无码第一区二区三区 | 亚洲av综合av一区| 妞干网免费视频观看| 国产高清不卡免费视频| 亚洲av无码成人精品国产| 久久91亚洲人成电影网站| 成年女人免费视频播放体验区| 特级毛片aaaa免费观看| 亚洲国产日韩在线成人蜜芽| 亚洲无线观看国产精品| 暖暖在线日本免费中文| 久久精品一本到99热免费| 曰韩无码AV片免费播放不卡 | 伊人久久综在合线亚洲2019| 国产成人免费ā片在线观看| 1区2区3区产品乱码免费| eeuss草民免费| 久久精品亚洲日本波多野结衣| 亚洲高清无在码在线电影不卡| 国产亚洲欧洲Aⅴ综合一区| 免费观看男人免费桶女人视频| 久久久久国色av免费看| 久久久久久久国产免费看| 国内成人精品亚洲日本语音| 亚洲国产91在线| 日韩精品亚洲人成在线观看|