sql >> Database teknologi >  >> RDS >> Oracle

Java lagret procedure kalder i java program

For at returnere en værdi skal den være en funktion, ikke en 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
    } 
  }

Så bliver din pakke:

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;

Og du kalder det noget i retning af:

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

Bemærk, at ud-parameteren nu er indeks 1, da det er afkastet fra funktionen, så den værdi, du sender ind, er nu indeks 2. Alt sammen utestet selvfølgelig...



  1. Sådan aktiveres TimescaleDB på en eksisterende PostgreSQL-database

  2. Interessante ting om I STEDET FOR triggere

  3. Spring Data JPA + Hibernate Spring over låste rækker (PostgreSQL)

  4. Sådan forankres/ophæves forespørgsel til Windows og andre faner i SQL Server Management Studio ( SSMS) - SQL Server / TSQL vejledning del 21