Professional Documents
Culture Documents
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
El procedimiento almacenado que usar en el ejemplo es este donde nos devuelve el nombre, el sexo
y el curso del alumno cuyo id le pasamos como primer parmetro.
8
9
10
11
12
13 END;
ELSE 'MUJER'
END,
curso
INTO p_nombre, p_sexo, p_curso
FROM alumnos WHERE id=p_id;
Con esto ya tenemos nuestra tabla y nuestro procedimiento almacenado guardados en la base de
datos con lo que ya podemos crear una aplicacin java que haga uso de ellos.
Como deca en este ejemplo nos conectamos con JDBC a una base de datos Oracle, por lo que lo
primero que tenemos que hacer es aadir el .jar de Oracle a nuestro proyecto.
Ahora ya esta todo listo y solo falta ver el cdigo necesario para hacer la llamada al procedimiento
almacenado. Para hacerlo lo ms sencillo posible vamos a hacer una aplicacin de consola con un
bucle para leer los IDs de los alumnos por teclado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.poi;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Ivn Salas
* <http://programandoointentandolo.com>
*/
public class EjemploProcAlmacenado {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
int id = -1;
Connection cn = null;
try {
// Carga el driver de oracle
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// Conecta con la base de datos XE con el usuario system y la contrasea password
cn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "system", "password");
// Llamada al procedimiento almacenado
CallableStatement cst = cn.prepareCall("{call ObtenerDatosAlumno (?,?,?,?)}");
38
39
do {
40
System.out.println("\nIntroduce el ID del alumno:");
41
try {
42
id = Integer.parseInt(entrada.readLine());
43
} catch (IOException ex) {
44
System.out.println("Error...");
45
}
46
47
// Parametro 1 del procedimiento almacenado
48
cst.setInt(1, id);
49
50
// Definimos los tipos de los parametros de salida del procedimiento almacenado
51
cst.registerOutParameter(2, java.sql.Types.VARCHAR);
52
cst.registerOutParameter(3, java.sql.Types.VARCHAR);
53
cst.registerOutParameter(4, java.sql.Types.VARCHAR);
54
55
// Ejecuta el procedimiento almacenado
56
cst.execute();
57
58
// Se obtienen la salida del procedimineto almacenado
59
String nombre = cst.getString(2);
60
String sexo = cst.getString(3);
61
String curso = cst.getString(4);
62
System.out.println("Nombre: " + nombre);
63
System.out.println("Sexo: " + sexo);
64
System.out.println("Curso: " + curso);
65
} while (id > 0);
66
67
} catch (SQLException ex) {
68
System.out.println("Error: " + ex.getMessage());
69
} finally {
70
try {
71
cn.close();
72
} catch (SQLException ex) {
73
System.out.println("Error: " + ex.getMessage());
74
}
75
}
76 }
77
78 }