Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/07/2007, 18:34
chcma
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Empezando con plpgsql, dudas basicas en SP

Buenas tardes amigos,

Verán, teniendo el siguiente Procedimiento Almacenado

Código:
CREATE OR REPLACE FUNCTION pinsertarusuario(IN pdni bpchar, IN pnombre bpchar, IN papellido_1 bpchar, IN papellido_2 bpchar, IN pfecha_nacimiento bpchar, IN pcod_provincia bpchar, IN pcod_pais bpchar, IN pciudad bpchar, IN pcodigo_postal bpchar, IN pemail bpchar, IN pclave bpchar, IN ptelefono_movil bpchar, IN pdescripcion bpchar, IN pcod_buscar integer, IN pnotificarme boolean, IN pver_todos boolean, OUT pcod_usuario integer) AS
$BODY$
BEGIN
INSERT INTO tusuarios(dni, nombre, apellido_1, apellido_2,
      fecha_nacimiento, cod_provincia, cod_pais,
      ciudad, codigo_postal, email, clave,
      telefono_movil, descripcion, cod_buscar,
      notificarme, ver_todos) 
VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16);
PCOD_USUARIO := currval('tusuarios_cod_usuario_seq');
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
¿Podrían decirme, que tengo que hacer para que despues de asignar el valor a PCOD_USUARIO, me devuelva una senencia SQL ?

Es decir, se que tengo que poner que la función devuelve un valor, pero cuando es un conjunto de datos lo que qyuiero devolver... ¿Qué valor tengo que poner al RETURNS?

Quiero que mi SP haga lo que hace, y además depsues de asignar el valor al parametro de salida, me devuelva una sentencia SQL.

Y tambien quiero que dicho SP en caso de error establezca el valor de PCOD_USUARIO a -1.

Bueno, se que son varias preguntas, pero es que estoy iniciándome y bueno... cuando me atasco la forma más rapida de solucionar mi problema es preguntando aqui.

Asi que si alguien puede solucionarme estas dos dudas se lo agradeceré enormemente.

Gracias por todo y un fuerte saludo.

PD: Gracias Seyko, como ves ya estoy dando duramente al plpgsql.
__________________
Charlie.