Oracle_java調用存儲過程、環境準備(9)

一.環境準備

  • 1.oracle11g使用的是ojdbc14版本的jar包
  • 2.oracle10g使用的是ojdbc6的jar包

 

二.java調用存儲過程之環境測試和調用存儲過程和存儲函數

    @Test
    public void testOracleDriver() throws Exception {

        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@120.79.49.227:1521:orcl11g","aaabbb","aaabbb");
        PreparedStatement statement = conn.prepareStatement("select * from emp where empno = ?");

        statement.setObject(1,7788);
        ResultSet resultSet = statement.executeQuery();
        while (resultSet.next()){
            System.out.println(resultSet.getString("ename"));
        }
        resultSet.close();
        statement.close();
        conn.close();


    }

    //存儲過程
    @Test
    public void testOracleProcedures() throws Exception {

        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@120.79.49.227:1521:orcl11g","aaabbb","aaabbb");
        //{call <procedure-name>[(<arg1>,<arg2>, ...)]} 存儲過程的寫法
        CallableStatement callableStatement = conn.prepareCall("{call p_yearsal(?,?)}");
        // 參數
        callableStatement.setObject(1,7788);
        //類型參數需要使用這個方法
        callableStatement.registerOutParameter(2, OracleTypes.NUMBER);

        callableStatement.execute();
        //因爲存儲過程是沒有返回值的,參數的賦值是直接在存儲過程中賦值的。
        System.out.println(callableStatement.getObject(2));
        callableStatement.close();
        conn.close();

    }

    //存儲函數
    @Test
    public void testOracleFunction() throws Exception {

        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@120.79.49.227:1521:orcl11g","aaabbb","aaabbb");
        //{call <procedure-name>[(<arg1>,<arg2>, ...)]} 存儲過程的寫法
        CallableStatement callableStatement = conn.prepareCall("{?=call f_yearsal(?)}");
        // 此處定義形參參數
        callableStatement.setObject(2,7788);
        //此處定義返回值參數
        callableStatement.registerOutParameter(1, OracleTypes.NUMBER);

        callableStatement.execute();
        //返回值爲第一個,所以獲取的值爲第一個
        System.out.println(callableStatement.getObject(1));
        callableStatement.close();
        conn.close();

    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章