Foros del Web » Programación para mayores de 30 ;) » Java »

Postgres (Array) + JDBC + Composite Types

Estas en el tema de Postgres (Array) + JDBC + Composite Types en el foro de Java en Foros del Web. Amigos, les escribo porque no hallo la forma de que esto me funcione: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original public Application ( ) {   ...
  #1 (permalink)  
Antiguo 14/02/2011, 12:42
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Postgres (Array) + JDBC + Composite Types

Amigos, les escribo porque no hallo la forma de que esto me funcione:

Código Java:
Ver original
  1. public Application(){
  2.         String driver = "org.postgresql.Driver";
  3.         String connectString = "jdbc:postgresql://localhost:5432/application";
  4.        
  5.         try{
  6.                     DataBase db = DataBase.getInstance("user", "pass");                
  7.  
  8.  
  9.                     CallableStatement call = db.getCallableStatement("{ call prod(?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");
  10.                     call.setInt(1, 100);
  11.                     call.setString(2, "PARAMETRO");
  12.                     call.setString(3, "STRING 3");
  13.                     call.setString(4, "String 4");
  14.                     call.setInt(5, 1);
  15.                     call.setInt(6, 100);
  16.                     call.setNull(7, Types.ARRAY);
  17.                     call.setNull(8, Types.ARRAY);
  18.                     call.setDouble(7, 1.0);
  19.                     call.setDouble(8, 2);
  20.                     call.setDouble(9, 3.3);
  21.                     call.setDouble(10, 4.4);
  22.                     call.setBoolean(11, true);
  23.                     call.setBoolean(12, true);
  24.                     call.setBoolean(13, true);
  25.                     call.setBoolean(14, true);
  26.                     call.execute();
  27.                     db.close();
  28.  
  29.                    
  30.                 }catch (SQLException e ){
  31.             e.printStackTrace();
  32.         }catch(InvocationTargetException e){
  33.             e.printStackTrace();
  34.         }catch(Exception e){
  35.             e.printStackTrace();
  36.         }

Código PgSQL:
Ver original
  1. CREATE OR REPLACE FUNCTION prod(integer, character varying, character varying, character varying, integer, integer, numeric, numeric, numeric, numeric, boolean, boolean, boolean, boolean)
  2.   RETURNS void AS
  3. $BODY$DECLARE
  4. BEGIN
  5.  
  6. END

Siempre me da error,
Código:
org.postgresql.util.PSQLException: ERROR: no existe la función prod(integer, character varying, character varying, character varying, integer, integer, double precision, double precision, double precision, double precision, boolean, boolean, boolean, boolean)
  Hint: Ninguna función coincide en el nombre y tipos de argumentos. Puede desear agregar conversión explícita de tipos.
  Position: 15
Efectivamente ya he revisado la cantidad de parametros y son 14...

Será problemas de permisos ?

Saludos...
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #2 (permalink)  
Antiguo 14/02/2011, 13:53
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Postgres (Array) + JDBC + Composite Types

Ya lo resolvi...

Estoy usando Postgresql 9.0 (x64) /Win7

El problema es que se debe hacer cast con el tipo de dato numeric que es que estoy usando en el Store Procedure, debo suponer que como numeric es distinto a double en postgresql he alli el problema...

Entonces la llamada al Store Procedure debe quedar asi:

Código Java:
Ver original
  1. // El Cast en Postgresql es igual "::tipo_de_dato"
  2.  
  3. CallableStatement call = db.getCallableStatement("{call pr(?,?,?,?,?,?,?::_o_producto_descripcion,?::_o_producto_parte,?::numeric,?::numeric,?::numeric,?::numeric,?,?,?,?)}");

Gracias y espero que a alguien le sirva...

Saludos...
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.

Etiquetas: jdbc, postgresql, type
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:23.