En este caso lo quer necesitas es doble comilla para simular la comilla interna.
Código SQL:
Ver originalEXECUTE 'SELECT dia_habil_'|| i ||' FROM dia_habil WHERE dispositivo='''||j.dispositivo||''' AND intervalo='''||j.intervalo||'''' INTO r2;
Esto puede resultar engorroso, para lo cual también aplica una función llamada quote_literal que creo que aplica así:
Código SQL:
Ver originalEXECUTE 'SELECT dia_habil_'|| i ||' FROM dia_habil WHERE dispositivo='||quote_literal(j.dispositivo)||' AND intervalo='||quote_literal(j.intervalo) INTO r2;
De igual forma, si no te funciona, mira la documentación, ya que no tengo forma de probarla en este momento.
http://www.postgresql.org/docs/9.1/s...ns-string.html
Revisala.
Adicional, como dice gnzsoloyo, creo que es conveniente separarlo en diferentes temas.