Ver Mensaje Individual
  #8 (permalink)  
Antiguo 09/08/2010, 14:19
Avatar de death_nemesis
death_nemesis
 
Fecha de Ingreso: abril-2009
Ubicación: Santiago - Chile
Mensajes: 147
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: return select

ya mira viejo me funciona pero a medias este es el codigo

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION prueba(idTaller INTEGER,IN Alias VARCHAR(255),OUT VehiculosTaller BIGINT,OUT CapacidadTaller SMALLINT) RETURNS SETOF RECORD AS $BODY$
  2. DECLARE
  3.     use_sql TEXT;
  4. BEGIN  
  5. use_sql := 'select count(VEHICULOS.id_vehiculo)as VehiculosTaller,locales.capacidad_instalada as CapacidadTaller from SINIESTROS,COMPANIAS,VEHICULOS,LOCALES,TALLERES
  6. where SINIESTROS.id_compania = COMPANIAS.id_compania and SINIESTROS.id_vehiculo = VEHICULOS.id_vehiculo and VEHICULOS.id_estado <> 12 and
  7. VEHICULOS.id_local   = LOCALES.id_local and LOCALES.id_taller = TALLERES.id_taller and TALLERES.id_taller = 5 and
  8. COMPANIAS.alias = upper(''bci'')group by locales.capacidad_instalada UNION ALL
  9. select count(VEHICULOS.id_vehiculo),locales.capacidad_instalada from SINIESTROS,COMPANIAS,VEHICULOS,LOCALES,TALLERES
  10. where SINIESTROS.id_compania = COMPANIAS.id_compania and SINIESTROS.id_vehiculo = VEHICULOS.id_vehiculo and VEHICULOS.id_estado <> 12 and
  11. VEHICULOS.id_local   = LOCALES.id_local and LOCALES.id_taller = TALLERES.id_taller and TALLERES.id_taller = 5 and COMPANIAS.alias <> upper(''bci'')
  12. group by locales.capacidad_instalada';  
  13. RETURN QUERY EXECUTE use_sql;  
  14. END;
  15. $BODY$
  16. LANGUAGE plpgsql;
  17. -- estos valores fueron por poner nomas ya que despues voy a arreglar lo de la concatenacion
  18. SELECT prueba (5,'text');
Código SQL:
Ver original
  1. Prueba
  2. Record
  3. -------------
  4. "(2,30)"
  5. "(1,30)"
la idea es que aparesca asi

Código SQL:
Ver original
  1. VehiculosTaller            CapacidadTaller  
  2. -------------------        -----------------------
  3.         2                               30
  4.         1                               30