//------------------------------------------------------------------------------
// ExJDBC9Out.java
//------------------------------------------------------------------------------

import java.sql.*;

class ExJDBC9Out {
    public static void main(String[] args)
	throws SQLException, ClassNotFoundException {

	Class.forName("oracle.jdbc.driver.OracleDriver");
	Connection c = DriverManager.getConnection(
            "jdbc:oracle:thin:waller_a/AQWzsx34@servora:1521:dbinfo");

	String texte = "{ ? = call age('Rita') }"; 
	CallableStatement cs = c.prepareCall(texte);
	cs.registerOutParameter(1, Types.INTEGER); // rem : pas pour curseur
	cs.execute();
	int age = cs.getInt(1); // comme dans curseur
	cs.close();

	System.out.println(age);

	texte = "{ ? = call age(?) }"; 
	cs = c.prepareCall(texte);
	cs.registerOutParameter(1, Types.INTEGER);
	cs.setString(2, "Rita"); // comme pour les prepared
	cs.execute();
	System.out.println(cs.getInt(1));
	cs.close();

	// exactement pareil (6 lignes) que pour fonction age ci-dessus :
	texte = "{ call age_out('Rita',?) }"; 
	cs = c.prepareCall(texte);
	cs.registerOutParameter(1, Types.INTEGER);
	cs.execute();
	System.out.println(cs.getInt(1));
	cs.close();

	texte = "{ call age_out(?,?) }"; 
	cs = c.prepareCall(texte);
	cs.registerOutParameter(2, Types.INTEGER);
	cs.setString(1, "Rita");
	cs.execute();
	System.out.println(cs.getInt(2));
	cs.setString(1, "Riton");
	cs.execute();
	System.out.println(cs.getInt(2));
	cs.close();

	c.close();
    }
}

//------------------------------------------------------------------------------
