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

no pùedo mostrar los resultados de un select dentro una funcion

Estas en el tema de no pùedo mostrar los resultados de un select dentro una funcion en el foro de PostgreSQL en Foros del Web. esta la funcion que tengo cuando la ejecuto select ver_tasa(123) me sale el sgte error ERROR: query has no destination for result data Estado SQL:42601 ...
  #1 (permalink)  
Antiguo 07/05/2007, 16:11
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años, 1 mes
Puntos: 0
no pùedo mostrar los resultados de un select dentro una funcion

esta la funcion que tengo
cuando la ejecuto select ver_tasa(123)
me sale el sgte error

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 "ver_tasa" line 5 at SQL statement



CREATE OR REPLACE FUNCTION ver_tasa(npre integer)
RETURNS record AS
$BODY$
declare
PORC DECIMAL(4,2);
resultado record;
begin
select PORC = PORCENT from vwtasas where vwtasas.num_pre = NPRE;
select PORC;

return resultado;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION ver_tasa(npre integer) OWNER TO postgres;
  #2 (permalink)  
Antiguo 08/05/2007, 07:49
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: no pùedo mostrar los resultados de un select dentro una funcion

Te falta asignarle al resultado lo que devuelve la consulta, algo como lo siguiente:

select PORC = PORCENT INTO resultado from vwtasas where vwtasas.num_pre = NPRE;

Si son varios registros entonces utiliza
return next resultado.
  #3 (permalink)  
Antiguo 08/05/2007, 13:14
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: no pùedo mostrar los resultados de un select dentro una funcion

Cita:
Iniciado por rusinho Ver Mensaje
Te falta asignarle al resultado lo que devuelve la consulta, algo como lo siguiente:

select PORC = PORCENT INTO resultado from vwtasas where vwtasas.num_pre = NPRE;

Si son varios registros entonces utiliza
return next resultado.
CREATE OR REPLACE FUNCTION ver_tasa(npre integer)
RETURNS record AS
$BODY$
declare
PORC DECIMAL(4,2);
resultado record;
begin
select PORC = PORCENT INTO resultado from vwtasas where vwtasas.num_pre = NPRE;
select PORC;
return next resultado;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION ver_tasa(npre integer) OWNER TO postgres;


ERROR: cannot use RETURN NEXT in a non-SETOF function at or near "next"
Estado SQL:42601
Caracter: 321

nada de nada si le pongo el setof
CREATE OR REPLACE FUNCTION ver_tasa(npre integer)
RETURNS setof record AS

ERROR: cannot change return type of existing function
Estado SQL:42P13
Sugerencias:Use DROP FUNCTION first.
  #4 (permalink)  
Antiguo 09/05/2007, 11:47
 
Fecha de Ingreso: febrero-2007
Mensajes: 39
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: no pùedo mostrar los resultados de un select dentro una funcion

esta funcion me saca solo una tupla o registro ..

DROP FUNCTION prueba();
CREATE OR REPLACE FUNCTION prueba()
RETURNS SETOF record AS
$BODY$
DECLARE
resultado record;
BEGIN
select nrotacho,nombre into resultado from proveedor;
return next resultado;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

como puedo hacer para q devuelva todos los datos
  #5 (permalink)  
Antiguo 09/05/2007, 13:34
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: no pùedo mostrar los resultados de un select dentro una funcion

Cita:
Iniciado por franklinelias Ver Mensaje
esta funcion me saca solo una tupla o registro ..

DROP FUNCTION prueba();
CREATE OR REPLACE FUNCTION prueba()
RETURNS SETOF record AS
$BODY$
DECLARE
resultado record;
BEGIN
select nrotacho,nombre into resultado from proveedor;
return next resultado;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

como puedo hacer para q devuelva todos los datos
en esas mismas ando
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 16:54.