Oracle
 sql >> база данни >  >> RDS >> Oracle

Извикване на запаметена процедура в Java в java програма

За да върнете стойност, трябва тя да бъде функция, а не процедура:

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

Тогава вашият пакет става:

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;

И вие го наричате така:

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

Обърнете внимание, че параметърът out вече е индекс 1, тъй като това е връщането от функцията, така че стойността, която предавате, вече е индекс 2. Всичко непроверено, разбира се...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете VARRAY като PL/SQL блоков член в базата данни на Oracle

  2. Разширете EM Grid Control до нови възли

  3. Разделяне на низ, разделен със запетая, в съхранена в PL/SQL процедура

  4. Заявката за изтриване на oracle отнема твърде много време

  5. Как можем да определим размера на изходния параметър в съхранената процедура?