Hola marcos hay diferencias en el resultado entre llamarla "select tu_funcion()" y llamarla select * from tu_funcion(), que raro que te devuelva lo mismo. La llamada con tipo RETURN TABLE no es necesario llamarla con AS (esto es para tipo RECORD)

mira agarre tu función y le hice una homologa de ejemplo y veras la diferencia de llamarla de una forma u otra:

CREATE OR REPLACE FUNCTION test2(
   nombre_bd text

    )
  RETURNS table(nombre text , dba  int,  codificacion int ) AS
$BODY$
declare
bd text;


begin
  if not exists (select * from pg_database  where datname=nombre_bd) then
raise exception 'La Base de datos % no existe en nuestra base de datos.', nombre_bd;
  else
select datname into bd from pg_database where datname=nombre_bd and datallowconn='TRUE';
    if not found then
        raise exception 'La base de datos ingresada,no pormite conexion';
    else

return query select datname ::text , datdba::int , encoding::int from pg_database where datname=nombre_bd;

        end if;

  end if;
end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

prueba llamandola de forma distinta y compara el resultado:
---llamada 1
select test2('postgres');

---llamada 2
select * from test2('postgres') ;


saludos

PD: creo que no me entendiste en el correo anterior donde te dije que la llamaras: select * from public.f_usuario_login( vf_usuario character, vf_clave character ) ----- :(




El 3/20/2016 a las 4:50 PM, Marcos Pastor escribió:
Que tal Anthony si de las 2 formas intente tambien usando AS y sale lo que muestro en la nueva imagen

Saludos,




-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a