要返回一个值,您需要它是一个函数,而不是一个过程:
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。当然,所有这些未经测试…



