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.

Responder a