亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

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

一、簡(jiǎn)介

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

  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ǔ)過(guò)程有的結(jié)果集是以游標(biāo)的方式返回,此時(shí)我們需要調(diào)用ResultSet rs = (ResultSet) statement.getObject(1);方法回去結(jié)果集

二、代碼

  以下存儲(chǔ)過(guò)程表結(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ǔ)過(guò)程代碼如下:

      
        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ǔ)過(guò)程如下

      
        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ǔ)過(guò)程代碼如下:

      
        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ǔ)過(guò)程代碼如下:

      
        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ǔ)過(guò)程代碼如下:

      
        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ǔ)過(guò)程


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

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

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

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 午夜一级成人 | 色综合久久91 | 色偷偷女人的天堂a在线 | 久久精品国产99久久香蕉 | 久久久久久久一线毛片 | 日韩视频大全 | 久久国产欧美日韩高清专区 | 亚洲在线小视频 | 中文字幕不卡在线高清 | 成人久久伊人精品伊人 | 四虎在线永久精品高清 | 99视频99| 免费香蕉一区二区在线观看 | 天天操夜夜操视频 | 亚欧在线免费观看 | 8090成人午夜精品 | 香蕉久热 | 久久国产成人精品麻豆 | 日韩欧美一级毛片视频免费 | 久久国产精品-国产精品 | 色综合色综合色综合色综合网 | 亚洲高清在线观看播放 | 精品国产91久久久久 | 国产伊人精品 | 欧美午夜性春猛交 | 国外成人免费高清激情视频 | 婷婷综合激情网 | 久久这里精品 | 欧美综合视频在线观看 | 亚洲欧洲日产国码天堂 | 国产福利视精品永久免费 | h在线免费视频 | 80s成年女人毛片免费观看观看 | 亚洲午夜综合网 | 亚州激情视频在线播放 | 亚洲深夜在线 | 国产高清天干天天视频 | a毛片免费 | 欧美日韩中文在线观看 | 天海翼一区二区三区高清视频 | 国产21区|