sql >> Database >  >> RDS >> Oracle

Java-opgeslagen procedure aanroepen in Java-programma

Om een ​​waarde terug te geven, moet het een functie zijn, geen procedure:

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

Dan wordt je pakket:

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;

En je noemt het zoiets als:

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

Merk op dat de out-parameter nu index 1 is, omdat het de return van de functie is, dus de waarde die je doorgeeft is nu index 2. Allemaal niet getest natuurlijk...



  1. Hoe RUNAS /NETONLY-functionaliteit in te bouwen in een (C#/.NET/WinForms) programma?

  2. Natuurlijke sortering die grote getallen ondersteunt

  3. Hoe POSITION() werkt in PostgreSQL

  4. SQLSTATE [HY000] [2002] Een verbindingspoging is mislukt.. - Bij een poging om verbinding te maken van een lokale naar een externe server