Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/07/2016, 09:24
Rebuilding
 
Fecha de Ingreso: julio-2014
Mensajes: 161
Antigüedad: 10 años, 4 meses
Puntos: 4
Respuesta: Procedure PostgreSQL

UMM, ERROR DE OMISION DE POSTGRES

Nadie me respondio, lo resolvi asi, creo que no es la mejor manera ya que en la segunda consulta, repito el alias de dos columnas, con el fin de poder solventar el "error de postgresql" al no soportar consultas dinamicas como lo hace mysql en los procedures
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION imagenes(id_num INTEGER)
  2.   RETURNS TABLE (ruta_img text, tipo_img INTEGER, porcentaje INTEGER, marca_id INTEGER, ruta_marca text, proporcion_marca INTEGER) AS
  3. $BODY$
  4. DECLARE
  5. SQL text;
  6. marca_opcion INTEGER;
  7. BEGIN
  8. SELECT cfg_ima_rutas.marca INTO marca_opcion FROM cfg_ima_rutas WHERE cfg_ima_rutas.id=id_num;
  9. IF(marca_opcion>0) THEN
  10. SQL := 'SELECT
  11. cfg_ima_rutas.ruta AS ruta_img, cfg_ima_rutas.tipo AS tipo_img, cfg_ima_rutas.porcentaje AS porcentaje, cfg_ima_rutas.marca AS marca_id, cfg_ima_marcas.ruta AS ruta_marca, cfg_ima_marcas.proporcion AS proporcion_marca
  12. FROM cfg_ima_marcas JOIN cfg_ima_rutas ON (cfg_ima_marcas.id = cfg_ima_rutas.marca) WHERE cfg_ima_rutas.id='||id_num;
  13. ELSE
  14. SQL := 'SELECT
  15. cfg_ima_rutas.ruta AS ruta_img, cfg_ima_rutas.tipo AS tipo_img, cfg_ima_rutas.porcentaje AS porcentaje, cfg_ima_rutas.marca AS marca_id,cfg_ima_rutas.ruta AS ruta_marca, cfg_ima_rutas.porcentaje AS proporcion_marca
  16. FROM cfg_ima_rutas WHERE cfg_ima_rutas.id='||id_num;
  17. END IF;
  18. RETURN query EXECUTE SQL;
  19. END;
  20. $BODY$
  21.   LANGUAGE plpgsql VOLATILE
  22.   COST 100;