欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

java代碼調(diào)用oracle存儲(chǔ)過程

系統(tǒng) 2079 0
原文: java代碼調(diào)用oracle存儲(chǔ)過程

一、簡(jiǎn)介

  與調(diào)用mysql存儲(chǔ)過程類型過程都是如下

  1、創(chuàng)建連接?Connection conn = DriverManager.getConnection(url, user, password);

  2、創(chuàng)建CallableStatement?CallableStatement statement = conn.prepareCall(sql);

  3、設(shè)置參數(shù)

    statement.setInt(1, id);
    statement.registerOutParameter(2, Types.VARCHAR);
    statement.registerOutParameter(3, Types.INTEGER);
    statement.registerOutParameter(4, Types.VARCHAR);

?  4、執(zhí)行

    statement.execute(); 或?statement.executeUpdate();

  5、獲取返回

    int age = statement.getInt(3);

  只是oracle存儲(chǔ)過程有的結(jié)果集是以游標(biāo)的方式返回,此時(shí)我們需要調(diào)用ResultSet rs = (ResultSet) statement.getObject(1);方法回去結(jié)果集

二、代碼

  以下存儲(chǔ)過程表結(jié)構(gòu)如下:

      
        DROP
      
      
        TABLE
      
      
         person ;


      
      
        CREATE
      
      
        TABLE
      
      
         person (

id 
      
      
        NUMBER
      
      (
      
        11
      
      ) 
      
        NOT
      
      
        NULL
      
      
         ,

username 
      
      
        VARCHAR2
      
      (
      
        255
      
       ) 
      
        NULL
      
      
         ,

age 
      
      
        NUMBER
      
      (
      
        11
      
      ) 
      
        NULL
      
      
         ,

password 
      
      
        VARCHAR2
      
      (
      
        255
      
      ) 
      
        NULL
      
      
         ,


      
      
        PRIMARY
      
      
        KEY
      
      
         (id)

)
      
    

  1、查詢所有記錄

  存儲(chǔ)過程代碼如下:

      
        create
      
      
        or
      
      
        replace
      
      
        procedure
      
      
         pro_person_findall(

       p_cursor out pkg_const.r_cursor

)


      
      
        is
      
      
        begin
      
      
        open
      
       p_cursor 
      
        for
      
      
        select
      
      
        *
      
      
        from
      
      
         person;

  exception

  
      
      
        when
      
       others 
      
        then
      
      
        

    DBMS_OUTPUT.PUT_LINE(
      
      
        '
      
      
        獲取信息發(fā)生錯(cuò)誤
      
      
        '
      
      
        );


      
      
        end
      
       pro_person_findall;
    

  調(diào)用代碼如下

      
        public
      
      
        static
      
      
        void
      
      
         findAll() {

        String driver 
      
      = "oracle.jdbc.driver.OracleDriver"
      
        ;

        String url 
      
      = "jdbc:oracle:thin:@127.0.0.1:1521:wuxx"
      
        ;

        String user 
      
      = "wuxx"
      
        ;

        String password 
      
      = "wuxx"
      
        ;

        
      
      
        try
      
      
         {

            Class.forName(driver);

            Connection conn 
      
      =
      
         DriverManager.getConnection(url, user, password);

            String sql 
      
      = "{call pro_person_findall2(?)}"
      
        ;

            CallableStatement statement 
      
      =
      
         conn.prepareCall(sql);

            statement.registerOutParameter(
      
      1
      
        , oracle.jdbc.OracleTypes.CURSOR);

            statement.execute();

            ResultSet rs 
      
      = (ResultSet) statement.getObject(1
      
        );

            ResultSetMetaData rmd 
      
      =
      
         rs.getMetaData();

            System.out.print(rmd.getColumnName(
      
      1) + "    "
      
        );

            System.out.print(rmd.getColumnName(
      
      2) + "    "
      
        );

            System.out.print(rmd.getColumnName(
      
      3) + "    "
      
        );

            System.out.print(rmd.getColumnName(
      
      4) + "\n"
      
        );

            
      
      
        while
      
      
         (rs.next()) {

                System.out.print(rs.getInt(
      
      "id") + "    "
      
        );

                System.out.print(rs.getString(
      
      "username") + "    "
      
        );

                System.out.print(rs.getInt(
      
      "age") + "    "
      
        );

                System.out.print(rs.getString(
      
      "password") + " \n"
      
        );

            }

        } 
      
      
        catch
      
      
         (ClassNotFoundException e) {

            e.printStackTrace();

        } 
      
      
        catch
      
      
         (SQLException e) {

            e.printStackTrace();

        }

    }
      
    

  2、查詢一條記錄

  存儲(chǔ)過程如下

      
        CREATE
      
      
        OR
      
      
        REPLACE
      
      
        PROCEDURE
      
      
         PRO_PERSON_FINDBYID(

    v_id 
      
      
        IN
      
      
        NUMBER
      
      
        ,

    v_username    OUT    
      
      
        VARCHAR2
      
      
        ,

    v_age    OUT    
      
      
        NUMBER
      
      
        ,

    v_password OUT    
      
      
        VARCHAR2
      
      
        ,

   p_count out 
      
      
        number
      
      
        

)


      
      
        AS
      
      
        BEGIN
      
      
        SELECT
      
       username, age, password 
      
        INTO
      
       v_username, v_age, v_password  
      
        from
      
       person 
      
        where
      
       id 
      
        =
      
      
         v_id;

  p_count :
      
      
        =
      
      
        1
      
      
        ; 

  exception

    
      
      
        when
      
       others 
      
        then
      
      
        

    p_count :
      
      
        =
      
      
        0
      
      
        ;


      
      
        END
      
      ;
    

  調(diào)用代碼如下:

      
        public
      
      
        static
      
      
        void
      
      
         find(Integer id) {

        String driver 
      
      = "oracle.jdbc.driver.OracleDriver"
      
        ;

        String url 
      
      = "jdbc:oracle:thin:@127.0.0.1:1521:wuxx"
      
        ;

        String user 
      
      = "wuxx"
      
        ;

        String password 
      
      = "wuxx"
      
        ;

        
      
      
        try
      
      
         {

            Class.forName(driver);

            Connection conn 
      
      =
      
         DriverManager.getConnection(url, user, password);

            String sql 
      
      = "{call PRO_PERSON_FINDBYID(?,?,?,?,?)}"
      
        ;

            CallableStatement statement 
      
      =
      
         conn.prepareCall(sql);

            BigDecimal rid 
      
      = 
      
        new
      
      
         BigDecimal(id);

            statement.setInt(
      
      1
      
        , id);

            statement.registerOutParameter(
      
      2
      
        , oracle.jdbc.OracleTypes.VARCHAR);

            statement.registerOutParameter(
      
      3
      
        , oracle.jdbc.OracleTypes.NUMBER);

            ; 
      
      
        //


      
                  statement.registerOutParameter(4
      
        , oracle.jdbc.OracleTypes.VARCHAR);

            statement.registerOutParameter(
      
      5
      
        , oracle.jdbc.OracleTypes.NUMBER);

            statement.execute();

            
      
      
        int
      
       flag = statement.getInt(5
      
        );

            
      
      
        if
      
       (flag != 0
      
        )

                System.out.println(statement.getString(
      
      2) + "  "

                        + statement.getInt(3) + "  " + statement.getString(4
      
        ));

            
      
      
        else
      
      
        

                System.out.println(
      
      "data not found!"
      
        );

        } 
      
      
        catch
      
      
         (ClassNotFoundException e) {

            e.printStackTrace();

        } 
      
      
        catch
      
      
         (SQLException e) {

            e.printStackTrace();

        }

    }
      
    

  3、增加記錄

  存儲(chǔ)過程代碼如下:

      
        create
      
      
        or
      
      
        replace
      
      
        procedure
      
      
         pro_person_insert(

       p_id 
      
      
        number
      
      
        ,

       p_username 
      
      
        varchar2
      
      
        ,

       p_age 
      
      
        number
      
      
        ,

       p_password 
      
      
        varchar2
      
      
        ,

       p_count out 
      
      
        number
      
      
        

)


      
      
        is
      
      
        begin
      
      
        insert
      
      
        into
      
       person (id, username, age, password) 
      
        values
      
      
        (p_id, p_username, p_age, p_password);

   p_count :
      
      
        =
      
       SQL
      
        %
      
      
        ROWCOUNT
      
      ;  
      
        --
      
      
         SQL%ROWCOUNT為 隱士游標(biāo)的屬性
      
      
        commit
      
      
        ;

   exception

     
      
      
        when
      
       others 
      
        then
      
      
        

     p_count :
      
      
        =
      
      
        0
      
      
        ;


      
      
        end
      
       pro_person_insert;
    

  調(diào)用代碼如下:

      
        public
      
      
        static
      
      
        void
      
       add(Integer id, String username, 
      
        int
      
      
         age,

            String u_password) {

        String driver 
      
      = "oracle.jdbc.driver.OracleDriver"
      
        ;

        String url 
      
      = "jdbc:oracle:thin:@127.0.0.1:1521:wuxx"
      
        ;

        String user 
      
      = "wuxx"
      
        ;

        String password 
      
      = "wuxx"
      
        ;

        
      
      
        try
      
      
         {

            Class.forName(driver);

            Connection conn 
      
      =
      
         DriverManager.getConnection(url, user, password);

            String sql 
      
      = "{call pro_person_insert(?,?,?,?,?)}"
      
        ;

            CallableStatement statement 
      
      =
      
         conn.prepareCall(sql);

            statement.setInt(
      
      1
      
        , id);

            statement.setString(
      
      2
      
        , username);

            statement.setInt(
      
      3
      
        , id);

            statement.setString(
      
      4
      
        , u_password);

            statement.registerOutParameter(
      
      5, oracle.jdbc.OracleTypes.NUMBER);
      
        //
      
      
         增加記錄是否成功的標(biāo)記,1 成功,0失敗
      
      
                    statement.execute();

            System.out.println(statement.getInt(
      
      5
      
        ));

        } 
      
      
        catch
      
      
         (ClassNotFoundException e) {

            e.printStackTrace();

        } 
      
      
        catch
      
      
         (SQLException e) {

            e.printStackTrace();

        }

    }
      
    

  4、更新記錄

  存儲(chǔ)過程代碼如下:

      
        create
      
      
        or
      
      
        replace
      
      
        procedure
      
      
         pro_person_update(

       p_id 
      
      
        number
      
      
        ,

       p_age 
      
      
        number
      
      
        ,

       p_password 
      
      
        varchar2
      
      
        ,

       p_count out 
      
      
        number
      
      
        

)


      
      
        is
      
      
        begin
      
      
        update
      
       person 
      
        set
      
       age 
      
        =
      
       p_age, password 
      
        =
      
       p_password 
      
        where
      
       id 
      
        =
      
      
         p_id;

  p_count :
      
      
        =
      
       SQL
      
        %
      
      
        ROWCOUNT
      
      
        ;

  
      
      
        commit
      
      
        ;

  exception

    
      
      
        when
      
       no_data_found 
      
        then
      
      
        

      p_count :
      
      
        =
      
      
        0
      
      
        ;

    
      
      
        when
      
       others 
      
        then
      
      
        

      p_count :
      
      
        =
      
      
        -
      
      
        1
      
      
        ;


      
      
        end
      
       pro_person_update;
    

  調(diào)用代碼如下:

      
        public
      
      
        static
      
      
        void
      
       update(Integer id, 
      
        int
      
      
         age, String u_password) {

        String driver 
      
      = "oracle.jdbc.driver.OracleDriver"
      
        ;

        String url 
      
      = "jdbc:oracle:thin:@127.0.0.1:1521:wuxx"
      
        ;

        String user 
      
      = "wuxx"
      
        ;

        String password 
      
      = "wuxx"
      
        ;

        
      
      
        try
      
      
         {

            Class.forName(driver);

            Connection conn 
      
      =
      
         DriverManager.getConnection(url, user, password);

            String sql 
      
      = "{call pro_person_update(?,?,?,?)}"
      
        ;

            CallableStatement statement 
      
      =
      
         conn.prepareCall(sql);

            statement.setInt(
      
      1
      
        , id);

            statement.setInt(
      
      2
      
        , age);

            statement.setString(
      
      3
      
        , u_password);

            statement.registerOutParameter(
      
      4, oracle.jdbc.OracleTypes.NUMBER);
      
        //
      
      
         增加記錄是否成功的標(biāo)記
      
      
                    statement.execute();

            System.out.println(statement.getInt(
      
      4
      
        ));

        } 
      
      
        catch
      
      
         (ClassNotFoundException e) {

            e.printStackTrace();

        } 
      
      
        catch
      
      
         (SQLException e) {

            e.printStackTrace();

        }

    }
      
    

  5、刪除記錄

  存儲(chǔ)過程代碼如下:

      
        create
      
      
        or
      
      
        replace
      
      
        procedure
      
      
         pro_person_delete(

       p_id 
      
      
        number
      
      
        ,

       p_count out 
      
      
        number
      
      
        

)


      
      
        is
      
      
        begin
      
      
        delete
      
      
        from
      
       person 
      
        where
      
       id 
      
        =
      
      
         p_id;

  p_count :
      
      
        =
      
       SQL
      
        %
      
      
        ROWCOUNT
      
      
        ;

  
      
      
        commit
      
      
        ;

  exception

    
      
      
        when
      
       no_data_found 
      
        then
      
      
        

      p_count :
      
      
        =
      
      
        0
      
      
        ;

    
      
      
        when
      
       others 
      
        then
      
      
        

      p_count :
      
      
        =
      
      
        -
      
      
        1
      
      
        ;


      
      
        end
      
       pro_person_delete;
    

  調(diào)用代碼如下:

      
        public
      
      
        static
      
      
        void
      
      
         delete(Integer id) {

        String driver 
      
      = "oracle.jdbc.driver.OracleDriver"
      
        ;

        String url 
      
      = "jdbc:oracle:thin:@127.0.0.1:1521:wuxx"
      
        ;

        String user 
      
      = "wuxx"
      
        ;

        String password 
      
      = "wuxx"
      
        ;

        
      
      
        try
      
      
         {

            Class.forName(driver);

            Connection conn 
      
      =
      
         DriverManager.getConnection(url, user, password);

            String sql 
      
      = "{call pro_person_delete(?,?)}"
      
        ;

            CallableStatement statement 
      
      =
      
         conn.prepareCall(sql);

            statement.setInt(
      
      1
      
        , id);

            statement.registerOutParameter(
      
      2, oracle.jdbc.OracleTypes.NUMBER);
      
        //
      
      
         增加記錄是否成功的標(biāo)記
      
      
                    statement.execute();

            System.out.println(statement.getInt(
      
      2
      
        ));

        } 
      
      
        catch
      
      
         (ClassNotFoundException e) {

            e.printStackTrace();

        } 
      
      
        catch
      
      
         (SQLException e) {

            e.printStackTrace();

        }

    }
      
    

?

java代碼調(diào)用oracle存儲(chǔ)過程


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 精久久| 奇米色影| 97久久精品人人做人人爽50路 | 色狠狠色综合吹潮 | 欧美色呦呦 | 久久久欧美综合久久久久 | 久草在线观看福利视频 | 久久精品欧美一区二区三区不卡 | 国产喷水视频 | 免费在线观看黄 | 欧美妇人 | 欧美激情专区 | 免费免费啪视频在线 | 国产精品日韩欧美在线第3页 | 日韩黄色大全 | 日本免费不卡一区二区 | 亚洲福利 | 一区二区三区亚洲 | 欧美浮力影院 | 久草网在线观看 | 国产亚洲欧美另类第一页 | 久久99热只有视精品6国产 | 亚洲欧美另类色妞网站 | 成人性生活视频在线播放 | 久久久av | 蜜桃黄网 | 奇米777在线观看 | 亚洲综合久久伊人热 | 国产精品视频观看 | wwwbnb89| 嫩草影院观看 | 在线观看国产日韩欧美 | 欧美精品综合在线 | 久久经典国产视频 | 特级毛片免费 | 天天看片中文字幕 | 午夜av免费 | 国产精品秒播无毒不卡 | 日韩免费看 | 日韩福利视频一区 | 男女免费爽爽爽在线视频 |