歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 在Java語言中調用存儲過程

在Java語言中調用存儲過程

日期:2017/3/1 10:25:57   编辑:Linux編程

首先一定要連接數據庫啊

  1. private static Connection conn;
  2. static{
  3. //第一步:加載驅動
  4. try {
  5. Class.forName("Oracle.jdbc.driver.OracleDriver");
  6. //得到連接對象 conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","scott");
  7. } catch (ClassNotFoundException e) {
  8. // TODO Auto-generated catch block
  9. e.printStackTrace();
  10. } catch (SQLException e) {
  11. // TODO Auto-generated catch block
  12. e.printStackTrace();
  13. }
  14. }

實例一:

  1. create or replace procedure selectEmp(emp_no in number,ename out varchar2,job out varchar2,sal out number,deptno out number) is
  2. begin
  3. select ename,job,sal,deptno into ename,job,sal,deptno from emp where empno=emp_no;
  4. end selectEmp;
  5. //調用存儲過程
  6. public static void procedure() throws SQLException{
  7. //創建CallableStatement 參數in out 通過占位符傳值
  8. CallableStatement cas=conn.prepareCall("{call selectEmp(?,?,?,?,?)}");
  9. //從1開始
  10. int index = 1;
  11. //為占位符賦值
  12. cas.setInt(index++, 7369);//賦值的是輸入參數
  13. //輸出參數
  14. cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);
  15. cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);
  16. cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER);
  17. cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER);
  18. //根據傳遞的參數值執行操作 如果第一個結果是 ResultSet 對象,則返回 true;如果第一個結果是更新計數或者沒有結果,則返回 false
  19. boolean flag=cas.execute();
  20. System.out.println(flag);
  21. if(!flag){//執行成功了
  22. String ename=cas.getString(2);
  23. String job=cas.getString(3);
  24. int sal=cas.getInt(4);
  25. int deptno=cas.getInt(5);
  26. System.out.println(ename);
  27. System.out.println(job);
  28. System.out.println(sal);
  29. System.out.println(deptno);
  30. }
  31. }
Copyright © Linux教程網 All Rights Reserved