From: | Felipe Contreras Oyarzún <fcontreras(dot)oyarzun(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Ayuda con SP Postgresql 9.4 |
Date: | 2016-09-11 21:58:16 |
Message-ID: | CALjnVOCCoOEFiTQu-3J1kkG6zbm1sQB399nM9JsSUoB+O466Ow@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Estimados,
Por la siguiente me gustaria saber en que estoy fallando, ya que lo que
espero de este SP es lo siguiente...
Que me retorno idcliente como un varchar(36) aprox, retorno 0 o 1, y un
mensaje puntual, pero al momento de procesarlo me arroja el error:
RROR: se llamó una función que retorna un conjunto en un contexto que no
puede aceptarlo
CONTEXTO: función PL/pgSQL sp02_generacliente(character varying,character
varying,character varying,character varying) en la línea 6 en RETURN QUERY
********** Error **********
ERROR: se llamó una función que retorna un conjunto en un contexto que no
puede aceptarlo
SQL state: 0A000
Context: función PL/pgSQL sp02_generacliente(character varying,character
varying,character varying,character varying) en la línea 6 en RETURN QUERY
; El SP a continuacion.
; La funcion getId(iden) en el insert, genera un string de 35 caracteres,
esa funciona OK :)
CREATE OR REPLACE FUNCTION sp02_generaCliente
(
IN iden VARCHAR(255),
IN nom VARCHAR(255),
IN rut VARCHAR(255),
IN correo VARCHAR(255)
)
RETURNS SETOF RECORD AS $$
DECLARE idcliente VARCHAR(36);
BEGIN
IF (SELECT 1 FROM cliente WHERE cliente = iden)
THEN
RETURN QUERY SELECT NULL AS idcliente, 0 AS retorno, 'LA ABREVIACIÓN
' || iden || 'YA EXISTE.' AS msg;
END IF;
IF (SELECT 1 FROM cliente WHERE nombre = nom)
THEN
RETURN QUERY SELECT NULL AS idcliente, 0 AS retorno, 'EL CLIENTE '
|| nom || ' YA EXISTE.' AS msg;
END IF;
IF (SELECT 1 FROM cliente WHERE rut = rut)
THEN
RETURN QUERY SELECT NULL AS idcliente, 0 AS retorno, 'El RUT ' ||
rut || ' YA EXISTE.' AS msg;
ELSE
INSERT INTO cliente (
id_cliente, cliente, nombre, rut, correo, fecha_creacion,
estado)
VALUES
(getId(iden), iden, nom, rut, correo, NOW(), TRUE) RETURNING
id_cliente INTO idcliente;
RETURN QUERY SELECT idcliente, 1 AS retorno, 'OK' AS msg;
END IF;
END;
$$
LANGUAGE plpgsql;
Quedo atento.
Saludos.
From | Date | Subject | |
---|---|---|---|
Next Message | Guillermo E. Villanueva | 2016-09-12 10:42:22 | Re: Ayuda con SP Postgresql 9.4 |
Previous Message | mauricio pullabuestan | 2016-09-09 22:46:27 | Restar solamente el tiempo solapado |