Ver Mensaje Individual
  #12 (permalink)  
Antiguo 09/08/2010, 14:44
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

jajaj ahora tengo otro problema resulta que al concatenar la variable me tira un resultado que no me sirve pero al no concatenar me tira bien el resultado

creo que se explica mejor con el codigo

CONCATENADO alias (No me sirve el resultado)

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 = '||idTaller||' and
  8. COMPANIAS.alias = upper('||'alias'||')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 = '||idTaller||' and COMPANIAS.alias <> upper('||'alias'||')
  12. group by locales.capacidad_instalada';  
  13. RETURN QUERY EXECUTE use_sql;  
  14. END;
  15. $BODY$
  16. LANGUAGE plpgsql;
  17.  
  18. SELECT * FROM prueba (5,'bci');
  19.  
  20.  
  21. VehiculosTaller           CapacidadTaller
  22. ---------------------    ---------------------------
  23.             3                             3

SIN CONCATENAR alias (SI me sirve el resultado)

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 = '||idTaller||' 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 = '||idTaller||' 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.  
  18. SELECT * FROM prueba (5,'bci');
  19.  
  20.  
  21. VehiculosTaller           CapacidadTaller
  22. ---------------------    ---------------------------
  23.             2                             30
  24.             1                             30