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

retorno record especifico

Estas en el tema de retorno record especifico en el foro de PostgreSQL en Foros del Web. holas; tengo un duda de como crear una funcion q me regrese las filas pero no quiero retornar todas las columnas de la tabla. he ...
  #1 (permalink)  
Antiguo 25/04/2008, 11:08
 
Fecha de Ingreso: octubre-2005
Mensajes: 28
Antigüedad: 19 años, 1 mes
Puntos: 1
retorno record especifico

holas;

tengo un duda de como crear una funcion q me regrese las filas pero no quiero retornar todas las columnas de la tabla. he tratado de hacerlo con record pero me indica que debo señalar cuales seran las columnas retornadas.


Código PHP:
CREATE OR REPLACE FUNCTION p_accesousuario (par_usu_id charpar_usu_pas varcharpar_age_id charRETURNS record AS
$body$
declare
    
v_usuario record;
    
v_dummy  char(1);
BEGIN

    
/*------------------------------------------------------------------*/  
    /* Validacion de la Agencia                                         */
    /*------------------------------------------------------------------*/    
    
if exists (
               
select age_id
               from sc_agente
               where age_id 
par_age_idthen
                   
       
/*---------------------------------------------------------------*/  
       /* Rescate de los datos del usuario                          */
       /*---------------------------------------------------------------*/
       
select pco_idrol_idusu_nombreusu_paternousu_materno
       into v_usuario
       from sc_usuario
       where usu_id 
par_usu_id
        
and  age_id par_age_id;
       
       if 
not FOUND then    
          raise notice 
'No existe USUARIO %'par_usu_id;
       else
          if 
par_usu_pas <> v_usuario.usu_pas_md5  then                   
             raise notice 
'Clave Incorrecta ';
             
end if;
       
end if;     
    else    
        
raise notice 'No existe AGENCIA %'par_age_id;
    
end if;              

    return 
v_usuario;

END;
$body$
LANGUAGE 'plpgsql'
como lo pouedo hacer??.

de antemono gracias.
  #2 (permalink)  
Antiguo 28/04/2008, 03:50
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 10 meses
Puntos: 13
Re: retorno record especifico

Esta bien, pero debes señalar las columnas retornadas:

select *
from p_accesousuario (par_usu_id char, par_usu_pas varchar, par_age_id char) as
(pco_id TIPO_DATO, rol_id, usu_nombre TIPO_DATO, usu_paterno TIPO_DATO, usu_materno TIPO_DATO)

Salu2
  #3 (permalink)  
Antiguo 28/04/2008, 08:58
 
Fecha de Ingreso: octubre-2005
Mensajes: 28
Antigüedad: 19 años, 1 mes
Puntos: 1
Re: retorno record especifico

gracias por la respuesta, pero me surge una duda hay alguna manera en que me pueda retornar lo que deseo sin necesidad de especificar el nombre y el tipo de los datos q deseo retornar, lo pregunto porque si es asi cada vez q modifique la funcion tenfria que tambien modificar el cliente que llama a la funcion.

Gracias. XT
  #4 (permalink)  
Antiguo 28/04/2008, 10:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 10 meses
Puntos: 13
Re: retorno record especifico

Puedes hacerlo creando un tipo y retornando ese tipo.
Por defecto, en postgres, se crea un tipo por tabla.
El tener que especificar los campos y su tipo, tiene logica, porque si no le dices como se llaman los campos y sus tipos, como te refieres a ellos?

Un saludo
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 12:23.