Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/10/2009, 08:19
Avatar de webness
webness
 
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 10 meses
Puntos: 5
Exclamación Problemas con el manejo de comillas en PL/pgSQL

Buenos dias, esta es mi duda:

tengo un procedimiento almacenado que ejecuta una consulta como esta:

select p.nombre_pais,
r.nombre,
c.nombre,
l.nom_localidad,
m.nivsocio,
count(m.id) as total
from servcon_manzanas m

INNER JOIN servcon_localidades l ON (m.coddane = l.cod_dane AND m.localidad = l.cod_localidad AND l.cod_localidad IN ('11','01','02','04','06','8','12','13','15'))
INNER JOIN ciudades c ON (m.coddane = c.coddane)
INNER JOIN servcon_regiones r ON (m.codregion = r.cod_region)
INNER JOIN servcon_paises p ON (m.codpais = p.codigo)

where m.coddane = '11001' and
m.localidad IN ('11','01','02','04','06','8','12','13','15') and
m.nivsocio in ('3','2','6','4','5')
group by l.nom_localidad, m.nivsocio,c.nombre,r.nombre,p.nombre_pais
order by m.nivsocio,l.nom_localidad.

Pero los valores de filtro para:

l.cod_localidad IN ('11','01','02','04','06','8','12','13','15')
m.nivsocio in ('3','2','6','4','5')
m.coddane = '11001'

No se como enviarlos como parametro cuando invoco el procedimiento, y tampoco se como colocarlos en el codigo del procedimiento al cual llamo asi:

select * from p_blocks('"11","01","02","04","06","82,"12","13","15"','"2","3","2","6","4","5"','11001')
y no genera error, el query dentro del procedimiento lo cree asi y no genero error tampoco, pero al invocar el procedimiento no genera resultados y estoy esperando 27 filas.

--DEFINICION DE LA CONSULTA DENTRO DE p_blocks
select p.nombre_pais,
r.nombre AS region,
c.nombre AS ciudad,
l.nom_localidad,
m.nivsocio,
count(m.id) as total
from servcon_manzanas m

INNER JOIN servcon_localidades l ON (m.coddane = l.cod_dane AND m.localidad = l.cod_localidad AND l.cod_localidad IN ($1))
INNER JOIN ciudades c ON (m.coddane = c.coddane)
INNER JOIN servcon_regiones r ON (m.codregion = r.cod_region)
INNER JOIN servcon_paises p ON (m.codpais = p.codigo)

where m.coddane = $3 and
m.localidad IN ($1) and
m.nivsocio in ($2)
group by l.nom_localidad, m.nivsocio,c.nombre,r.nombre,p.nombre_pais
order by m.nivsocio,l.nom_localidad

LOOP RETURN NEXT query_result;
END LOOP;

alguien sabe como solucionar el problema