欧美三区_成人在线免费观看视频_欧美极品少妇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)論
主站蜘蛛池模板: 91国色| 另类国产ts人妖高潮系列视频 | 亚洲精品久久久久一区二区三区 | 超级碰碰碰视频视频在线视频 | 欧洲视频在线观看 | 国产婷婷色一区二区三区在线 | 亚洲视频在线免费看 | 亚洲 综合 欧美 动漫 丝袜图 | 狠狠干av | 成人在线视频网站 | 国产精品国产精品国产专区不卡 | 欧美国产精品一区二区 | 中文字幕亚洲欧美 | 亚洲国产精品成人 | 精品久久久久久蜜臂a∨ | 成人小片magnet | 久操中文在线 | 国产综合久久久久 | 国产一区二区不卡 | 欧美精品久久久久久久免费观看 | 久久久久久久一区二区 | 欧美精品网站 | 韩国久久久久无码国产精品 | 99热久久这里只精品国产 | 天天做天天欢天天爽 | 亚洲午夜精品一级在线 | 国产一级免费在线视频 | 国产精品免费一区二区三区都可以 | 欧美日韩精品一区二区三区蜜桃 | 欧美jizzjizz在线播放 | 日韩欧美亚洲综合久久99e | 天天射天天操天天干 | 亚洲一二三四2021不卡 | 四虎免费久久影院 | 久久影城 | 日日插夜夜操 | 欧美日韩在线一区二区三区 | 亚洲综合99 | 91成人影院未满十八勿入 | 国产成人18黄网站免费网站 | 午夜小视频在线播放 |