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.