obtener la salida de un procedimiento o sea el OUT de un atributo
tengo mi procedimiento de esta forma, el cual funciona:
Código:
CREATE PROCEDURE ValidarPrgramas_IN( IN _nombreArchivoPrograma varchar(100), IN _nombrePrograma varchar(100), IN _categoriaPrograma varchar(20), IN _versionPrgrama decimal(10,4), IN _descripcionPrograma text, OUT _textoValidacion varchar(100) ) BEGIN #Validación si existe ArchivoPrograma y Version if not exists (select * from Programas where _nombreArchivoPrograma = nombreArchivoPrograma and _versionPrgrama = versionPrgrama) then select CONCAT('Ya existe la version ',_versionPrgrama, ' del Archivo ', _nombreArchivoPrograma, ' en la Base de Datos') into _textoValidacion; else #Insertar a la tabla Programas insert into Programas (nombreArchivoPrograma,nombrePrograma,categoriaPrograma, versionPrgrama,fechaIngresoPrograma,tiempoIngresoPrograma,descripcionPrograma) values (_nombreArchivoPrograma,_nombrePrograma,_categoriaPrograma,_versionPrgrama ,curdate(),curtime(),_descripcionPrograma); select 'Insertado Correctamente' into _textoValidacion; end if; END;
y el método que me conecta es el siguiente:
Código:
Todo bien hastaa esta linea...private void insertandoDatos() { String $sql= "{call ValidarPrgramas_IN (?,?,?,?,?,?)}"; Connection con = null; CallableStatement cs = null; String datoRecibido = ""; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/OrganizandoProgramas","root","Abc321"); cs = (CallableStatement) con.prepareCall($sql); cs.setString(1,txt_ArchivoPrograma.getText()); cs.setString(2,txt_NombrePrograma.getText()); cs.setString(3,cmb_CategoriaPrograma.getSelectedItem().toString()); cs.setDouble(4,Double.parseDouble(txt_VersionPrograma.getText())); cs.setString(5,txa_DescripcionPrograma.getText()); cs.registerOutParameter(6,Types.VARCHAR); cs.execute(); datoRecibido = cs.getString(6); //Si el datoRecibido es null if(cs.wasNull()){ JOptionPane.showMessageDialog(null,"Respusta Nula"); } else{ JOptionPane.showMessageDialog(null,datoRecibido); } } catch (Exception e) { JOptionPane.showMessageDialog(null,"Error en Procedimiento Almacenado.\n"+ e.getMessage()+"\n"); } }
Código:
Porque no consigo obtener el dato??? ya he realizado pruebas con menos atributos en el procedimiento y defirentes tipos de dato (varchar,text,integer)... y nada, siempre me arroja el mismo error: ([URL="http://www.flickr.com/photos/40124967@N06/4915330245/lightbox/"]imagenError[/URL])cs.registerOutParameter(6,Types.VARCHAR);
Parameter index of * is out of range (1,0)
Les agradeceria la ayuda...