Ver Mensaje Individual
  #1  
Antiguo 15-12-2010
Avatar de Zeta
Zeta Zeta is offline
Miembro
 
Registrado: feb 2005
Posts: 215
Reputación: 20
Zeta Va por buen camino
Post Pasar Función de PL/pgSQL a SQL92

Hola a todos, tengo escrita una función que hace lo siguiente:
1º busca el id de documentos
2º si no lo encuentra lo ingresa en el tabla documentos
3º ingresa en la tabla personal el nombre, id del tipo de documento(dada la descripción)) y nº doc.

El motivo: Pasarla a SQL porque el hosting postgres tiene solamente ese lenguaje

La Función:
Código SQL [-]
CREATE OR REPLACE FUNCTION pruebas(varchar, varchar, integer)
RETURNS SETOF personal AS  
$delimiter$
BEGIN
PERFORM id from documentos WHERE descripcion = $1;
IF NOT FOUND THEN
    INSERT INTO documentos(descripcion) VALUES($1);
END IF;
INSERT INTO personal(nombre,idtipodocumento,numdoc) 
VALUES($2,(SELECT id from documentos WHERE descripcion = $1),$3);
END;
$delimiter$
LANGUAGE plpgsql;

Tablas
documentos
Código SQL [-]
CREATE TABLE documentos
(
  id serial NOT NULL,
  descripcion character varying(60),
  CONSTRAINT pkdocumentos PRIMARY KEY (id)
)


personal
Código SQL [-]
CREATE TABLE personal
(
  id serial NOT NULL,
  nombre character varying(60),
  idtipodocumento smallint NOT NULL,
  numdoc integer,
  CONSTRAINT pkpersonal PRIMARY KEY (id),
  CONSTRAINT fkpdoc FOREIGN KEY (idtipodocumento)
      REFERENCES documentos (id) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE NO ACTION,
  CONSTRAINT unqnumdoc UNIQUE (idtipodocumento, numdoc)
)
__________________
And I'd like an hour on the holodeck with Seven of Nine.
Responder Con Cita