PostgreSQL - Error en función la consulta no tiene un destino para los datos de resultado

 
Vista:
Imágen de perfil de Jorge Gonzalez

Error en función la consulta no tiene un destino para los datos de resultado

Publicado por Jorge Gonzalez (1 intervención) el 05/07/2016 02:26:40
Estoy creando una función para que me devuelva el nombre de un cliente según un código de cliente dado como parametro de entrada:


CREATE OR REPLACE FUNCTION retornanombrecliente(ccodigo character(6), OUT cnombre character(100))RETURNS character AS
$BODY$
BEGIN
SELECT clientes.rsocial_cliente FROM clientes WHERE codigo_cliente=ccodigo;
cnombre:=rsocial_cliente;
END;
$BODY$
LANGUAGE plpgsql



Y cuando ejecuto el mismo:


SELECT * from retornanombrecliente('000001');

Me da el siguiente error:

ERROR: la consulta no tiene un destino para los datos de resultado
HINT: Si quiere descartar los resultados de un SELECT, utilice PERFORM.
CONTEXT: función PL/pgSQL retornanombrecliente(character) en la línea 3 en sentencia SQL
********** Error **********

ERROR: la consulta no tiene un destino para los datos de resultado
SQL state: 42601
Hint: Si quiere descartar los resultados de un SELECT, utilice PERFORM.
Context: función PL/pgSQL retornanombrecliente(character) en la línea 3 en sentencia SQL


Me dice que el error está en la función no encuentro dicho error.


Ahora bien he cambiado el comando utilizando el perform



CREATE OR REPLACE FUNCTION retornanombrecliente(ccodigo character(6), OUT cnombre character(100))RETURNS character AS
$BODY$
BEGIN
PERFORM clientes.rsocial_cliente FROM clientes WHERE codigo_cliente=ccodigo;
cnombre:=rsocial_cliente;
END;
$BODY$
LANGUAGE plpgsql;


y me da el siguiente error:



ERROR: no existe la columna «rsocial_cliente»
LINE 1: SELECT rsocial_cliente
^
QUERY: SELECT rsocial_cliente
CONTEXT: función PL/pgSQL retornanombrecliente(character) en la línea 4 en asignación
********** Error **********

ERROR: no existe la columna «rsocial_cliente»
SQL state: 42703
Context: función PL/pgSQL retornanombrecliente(character) en la línea 4 en asignación
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error en función la consulta no tiene un destino para los datos de resultado

Publicado por martin (121 intervenciones) el 01/08/2016 01:44:46
Creo que todos tus poblemas se resuelven con un INTO y si vas a usar ese stored procedure en un select tendrias que utilizar el return.
Ejemplo

1
2
3
4
5
6
7
8
9
10
CREATE OR REPLACE FUNCTION retornanombrecliente(ccodigo character(6))RETURNS TEXT AS
$BODY$
DECLARE
       NOMBRE TEXT
BEGIN
SELECT clientes.rsocial_cliente INTO NOMBRE FROM clientes WHERE codigo_cliente=ccodigo;
RETURN NOMBRE;
END;
$BODY$
LANGUAGE plpgsql
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar