Parametros en Procedimientos almacenados

From: Ricardo Fuentes Pereira <rfuentesp(at)gmail(dot)com>
To: "'pgsql-es-ayuda(at)postgresql(dot)org'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Parametros en Procedimientos almacenados
Date: 2005-05-12 21:58:32
Message-ID: 4283D188.5060603@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola.
Actualmente estoy trabajando con Java y PostgreSQL en mis proyectos.
Utilizo procedimientos almacenados para interactuar con postgresql.
Suponiendo que tengo esta tabla en la BD:

mi_tabla
entero int4
cadena varchar

Creo una clase analoga a la tabla en cuestion:
public class MiTabla {
private int entero;
private String cadena;

// agregar metodos get y set para obtener y establecer atributos
}

A continuacion, utilizando un patron de diseño, hago que mis metodos de
reciban un objeto cuando, por ejemplo, necesito ingresar un registro o
fila. Por ejemplo:
public int insertMiTabla(MiTabla _miTabla)

Y dentro del metodo hago uso de la CallableStatement, entregandole un
String como argumento. Este String lo declaro de la sgte forma:
String sp = "{? = call insertMiTabla( ?, ? )}";

donde despues establezco en el CallableStatement los dos ultimos signos
de pregunta con _miTabla.getEntero() y _miTabla.getCadena().
Utilizo plpgsql en el otro lado, donde el procedimiento debiera ser asi:

CREATE OR REPLACE FUNCTION insertMiTabla(int4, varchar)
RETURNS int4 AS
'
DECLARE _entero ALIAS FOR $1;
_cadena ALIAS FOR $2;

BEGIN
INSERT INTO mi_tabla
(entero, cadena)

VALUES (_entero, _cadena);
RETURN 0;
END;
'
LANGUAGE 'plpgsql' VOLATILE;

He aqui el problema. Deseo pasar solo un parametro en el procedimiento
almacenado, algo que sea analogo a mi_tabla, para seguir utilizando el
patron de diseño (el beneficio de este patron esta dado en que si se
agregan/eliminan campos en la tabla, no tenga que modificar mi codigo
Java donde haga ingresos/modificaciones de datos, sino que tengo que
hacer los cambios en el servidor de la BD :) ).

Me imagino que se tendra que crear un tipo complejo. ¿Y cual sera su
tipo en Java el cual ira en la declaracion de la sentencia?

Espero sus respuestas.

Salu2

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2005-05-12 22:01:09 Re: Problema con TCL en Postgresql 8.0 para windows
Previous Message mmiranda 2005-05-12 21:06:14 RE: Secuencias (Consulta) II