> Subject: [pgsql-es-ayuda] Ayuda con llamada a funcion> From: nachxs(at)gmail(dot)com> To: pgsql-es-ayuda(at)postgresql(dot)org> Date: Sun, 25 Nov 2007 21:20:11 -0500> > Sres como estan, bueno recurriendo otra vez a Uds. por una consulta,> estoy trabajando con una aplicacion en Java y postgres, y se me esta> presentando un problema al llamas la funcion desde mi aplicacion java.> Esta es mi funcion:> > Create or Replace Function sp_inserta_evaluaciones (> codigo_evaluacion Char(5), > titulo Varchar(50),> tipo_evaluacion Varchar(100),> nombre_curso Varchar(100),> peso Numeric, > minimo Integer, > maximo Integer) Returns VARCHAR As $$> > Declare> codigo_tipoevaluacion Char(5);> codigo_curso Char(5);> fecha TimeStamp With Time Zone;> > Begin> fecha = current_date;> Select idtipoevaluacion into codigo_tipoevaluacion from tipoevaluacion Where desc_tipoevaluacion = tipo_evaluacion;> Select idcursos into codigo_curso from cursos Where descripcion = nombre_curso;> If codigo_tipoevaluacion is not NULL Then> If codigo_curso is not NULL Then> Insert Into evaluacion Values (codigo_evaluacion,codigo_tipoevaluacion, codigo_curso, titulo, fecha, peso, minimo, maximo);> Return "OK";> Else> Return "No el existe codigo de curso, para este nombre";> End If;> Else> Return "No el existe codigo de tipo de evaluacion, para este nombre";> End If;> > End;> $$ Language plpgsql;> > > el problema es cuando hago la llamada desde java, lo hago de la siguiente forma:> > try> { > con = Conexion.ConexionBD(); > call=con.prepareCall("{ ?=call sp_inserta_evaluaciones(?,?,?,?,?,?,?) }");> call.registerOutParameter(1,Types.VARCHAR);> call.setString(2,codigoEvaluacion);> call.setString(3,titulo);> call.setString(4,tipoEvaluacion);> call.setString(5,curso);> call.setFloat(6,peso);> call.setInt(7,notaMinima);> call.setInt(8,notaMaxima);> call.execute();> valorRetorno = call.getString(1);> return valorRetorno;> }> catch(Exception e){> return e.getMessage();> }> > cuando ejecuto el codigo me sale que la funcion no existe en la base de> datos. Aguna sugerencia??> > --> TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán
Buenas noches:
Tendrias que ver los tipos de datos de tu funcion, debe coincidir con los tipos de datos que pasas desde tu aplicacion, porque x lo q he visto hasta ahora, la funcion hace referencia a los parametros por el tipo de dato y no por el nombre de los mismos.
Veo q en la parte del parametro de peso, definiste como numeric pero le estas pasando un float, fijate en los demas.
Espero haberte ayudado.
_________________________________________________________________
Explore the seven wonders of the world
http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE