Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/11/2015, 07:55
edwin100
 
Fecha de Ingreso: agosto-2015
Mensajes: 35
Antigüedad: 8 años, 9 meses
Puntos: 0
sql dinamico

muchachos tengo un procedimiento almacenado con un sql dinamico pero quiero que colocarle a ese sql unos parametros de que viene de otra consulta lo tengo algo si:
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION prueba()
  2.     RETURNS SETOF "int8" AS
  3.     $BODY$
  4. DECLARE
  5.     r INTEGER;
  6.     r2 INTEGER;
  7.     i INTEGER;
  8.     j record;
  9.    
  10. BEGIN
  11.  
  12.  
  13.  FOR j IN SELECT dispositivo,salidas.intervalo FROM mapeo_bca INNER JOIN salidas ON mapeo_bca.acceso_de_estación=salidas.acceso WHERE salidas.fecha_de_trasaccion='29/10/2015' AND salidas.intervalo='00:00' AND dispositivo='10000002' ORDER BY dispositivo
  14. loop
  15.  r := 0;
  16.  FOR i IN 1..10  LOOP
  17.  
  18.  EXECUTE 'SELECT dia_habil_'|| i ||' FROM dia_habil WHERE dispositivo='||j.dispositivo||' AND intervalo='||j.intervalo||''  INTO r2;
  19. r:= r+ r2;
  20.  
  21. RETURN NEXT r;
  22.  
  23. END LOOP;
  24.  
  25.  
  26. END loop;
  27.  
  28.  
  29. END;
  30. $BODY$
  31. LANGUAGE 'plpgsql' VOLATILE;

pero el inconveniente es que los dos valores tiene que estar dentro de comillas por que son varchar miren el erro que me sale :
Código SQL:
Ver original
  1. ERROR:  error de sintaxis en o cerca de «:»
  2. LINE 1: ...ROM dia_habil WHERE dispositivo=10000002 AND intervalo=00:00
  3.                                                                     ^
  4. QUERY:  SELECT dia_habil_1 FROM dia_habil WHERE dispositivo=10000002 AND intervalo=00:00
  5. CONTEXT:  función PL/pgSQL prueba() en la línea 16 en sentencia EXECUTE

me podrian ayudar

Última edición por gnzsoloyo; 06/11/2015 a las 08:16