Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wywołanie procedury składowanej Java w programie Java

Aby zwrócić wartość, musi to być funkcja, a nie procedura:

  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
    } 
  }

Wtedy Twój pakiet stanie się:

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;

I nazywasz to mniej więcej tak:

        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);

Zauważ, że parametr out ma teraz indeks 1, ponieważ jest to zwrot z funkcji, więc wartość, którą przekazujesz, ma teraz indeks 2. Oczywiście wszystko niesprawdzone...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. różnica kryteriów wyszukiwania między Like vs Contains() w Oracle

  2. Podziel adres IPv4 na 4 liczby w Oracle sql

  3. Jak iterować w zakresie dat w PL/SQL

  4. 4 sposoby znajdowania wierszy zawierających małe litery w Oracle

  5. Dlaczego CONNECT BY LEVEL w tabeli zwraca dodatkowe wiersze?