Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

como devolver el resultado de una funcion

Estas en el tema de como devolver el resultado de una funcion en el foro de PostgreSQL en Foros del Web. CREATE OR REPLACE FUNCTION bus_alt_gar(des bpchar, gar bpchar) RETURNS void AS $BODY$declare begin SELECT gar = descrip FROM garantia WHERE garantia.descrip = des; IF char_length(gar) ...
  #1 (permalink)  
Antiguo 24/04/2007, 08:59
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años, 6 meses
Puntos: 0
como devolver el resultado de una funcion

CREATE OR REPLACE FUNCTION bus_alt_gar(des bpchar, gar bpchar)
RETURNS void AS
$BODY$declare
begin
SELECT gar = descrip FROM garantia WHERE garantia.descrip = des;
IF char_length(gar) <> 0 then
begin
select gar;
end ;
end if;

end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION bus_alt_gar(des bpchar, gar bpchar) OWNER TO postgres;


ERROR: query has no destination for result data
Estado SQL:42601
Sugerencias:If you want to discard the results of a SELECT, use PERFORM instead.
Contexto:PL/pgSQL function "bus_alt_gar" line 3 at SQL statement

no se como devolver el resultado de mi funcion tengo que crear algun tipo de variable para que me retorne el resultado???
  #2 (permalink)  
Antiguo 26/04/2007, 08:50
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: como devolver el resultado de una funcion

Cita:
Iniciado por mariovargascareaga Ver Mensaje
CREATE OR REPLACE FUNCTION bus_alt_gar(des bpchar, gar bpchar)
RETURNS void AS
$BODY$declare
begin
SELECT gar = descrip FROM garantia WHERE garantia.descrip = des;
IF char_length(gar) <> 0 then
begin
select gar;
end ;
end if;

end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION bus_alt_gar(des bpchar, gar bpchar) OWNER TO postgres;


ERROR: query has no destination for result data
Estado SQL:42601
Sugerencias:If you want to discard the results of a SELECT, use PERFORM instead.
Contexto:PL/pgSQL function "bus_alt_gar" line 3 at SQL statement

no se como devolver el resultado de mi funcion tengo que crear algun tipo de variable para que me retorne el resultado???
La verdad cualquier funcion siempre retorna un valor, pero si le das que retorna VOID entonces esta no retornara nada, lo que puedes hacer es por ejemplo si es una suma le puedes decir RETURN bigint AS

Entonces quedaria algo como lo siguiente:
create function suma(bigint num1, bigint num2) RETURNS bigint AS
$BODY$declare
var suma:=0;
begin
suma:=num1+num2;
RETURN suma;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION suma(bigint num1, bigint num2) OWNER TO postgres;
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:01.