procedimientos almacenados
// Parámetros a enviar al procedimiento
int variableNumerica = 100;
String variableTexto = “A”;
CallableStatement cstmt = con.prepareCall(
"{callspu_procedimiento(?, ?, ?, ?, ?)}");
// Seteo de parámetros.
cstmt.setInt(1, variableNumerica);
cstmt.setString(2, variableTexto);
cstmt.registerOutParameter(3, Types.INTEGER);
cstmt.registerOutParameter(4,Types.VARCHAR);
cstmt.registerOutParameter(5, OracleTypes.CURSOR);
cstmt.executeQuery();
// Parámetros a recibir del procedimiento
int error = cstmt.getInt(3); // Parámetro desalida numérico
String mensaje = cstmt.getString(4); // Parámetro de salida texto
// Parámetro de salida lista de datos
ResultSet res = (ResultSet) cstmt.getObject(5);
LLAMADA A FUNCIÓN// Parámetros a enviar a la función
int variableNumerica = 100;
String variableTexto = “A”;
CallableStatement cstmt = con.prepareCall(
"{?=call spu_funcion(?, ?)}");cstmt.registerOutParameter(1, Types.INTEGER);
cstmt.setInt(2, variableNumerica);
cstmt.setString(3, variableTexto);
cstmt.executeQuery();
// Parámetro de salida numérico
int error =cstmt.getInt(1);
Los símbolos “?” corresponden al orden en que se envían los parámetros a los procedimientos y funciones. Al setear los parámetros se incluyen las posiciones en el que sepresentan los parámetros.
Ejemplo de un método con llamada a una función con devolución de un parámetro de error:
public int getMetodoFuncionOracle
(int valor1, int valor2, int valor3, int valor4,int valor5, int valor6) throws SQLException {
Connection con_oracle = con.conexion();
int error = -1;
try {
CallableStatement cstmt = con_oracle.prepareCall
("{?=call spu_funcion (?, ?, ?,?, ?)}");
cstmt.registerOutParameter(1, Types.INTEGER);
cstmt.setInt(2, valor1);
cstmt.setInt(3, valor2);
cstmt.setInt(4, valor3);
cstmt.setInt(5, valor4);
cstmt.setInt(6, valor5);...
Regístrate para leer el documento completo.