Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Gọi thủ tục Java được lưu trữ trong chương trình java

Để trả về một giá trị, bạn cần nó là một hàm chứ không phải một thủ tục:

  public static String getBreweryInfo (int Raz_ID) 
  throws SQLException 
  { 
    String sql = 
      "SELECT Nosaukums FROM Alus_razotaji WHERE ID = ?";//vaicajums
    try {
      Connection conn = DriverManager.getConnection("jdbc:default:connection:");
      PreparedStatement apstmt = conn.prepareStatement(sql);
      apstmt.setInt(1, Raz_ID); 
      ResultSet rset = apstmt.executeQuery();// SQL vaicājuma izpildīšana

      if (rset.next()) {
          return rset.getString(1);
      } 
    }
    catch (SQLException e) {
      System.err.println(e.getMessage()); //Kļūdu izvadīsana
    } 
    finally {
      rset.close();
      apstmt.close(); //Savienojuma aizvēršana
    } 
  }

Sau đó, gói của bạn trở thành:

CREATE OR REPLACE PACKAGE BODY BeerBeer AS
  FUNCTION getBreweryInfo(Raz_ID number) RETURN varchar2 AS Language Java
  NAME 'BeerBeer.getBreweryInfo(int) return java.lang.String';
END BeerBeer;

Và bạn gọi nó như sau:

        String SQL = "{CALL ? = BeerBeer.getBreweryInfo (?)}";
        stmt = conn.prepareCall(SQL);
        int Raz_ID = 4;
        stmt.registerOutParameter(1, java.sql.Types.VARCHAR);
        stmt.setInt(2, Raz_ID);
        System.out.println("Izpildam JAVA glabajamo proceduru ...");
        // Vaicājuma izpilde
        stmt.execute();
        //Izgustam Alus_razotaja nosaukumu ar getXXX metodi.
        String Razotajs = stmt.getString(1);

Lưu ý rằng tham số out hiện là chỉ mục 1 vì nó là giá trị trả về từ hàm, vì vậy giá trị bạn truyền vào bây giờ là chỉ số 2. Tất nhiên, tất cả đều chưa được kiểm tra ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khớp các giá trị cột trùng lặp của Oracle bằng cách sử dụng Soundex, Jaro Winkler và Chỉnh sửa Khoảng cách (UTL_MATCH)

  2. Oracle GROUP_CONCAT () Tương đương

  3. Mệnh đề Oracle SQL Where để tìm các bản ghi ngày cũ hơn 30 ngày

  4. Xóa bộ nhớ cache cấp 2 ở chế độ Hibernate sau khi cập nhật DB theo cách thủ công

  5. Cơ sở dữ liệu Oracle là gì?