Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Plpgsql - Necesito ayuda

Estas en el tema de Plpgsql - Necesito ayuda en el foro de Bases de Datos General en Foros del Web. Estoy haciendo una función en plpgsql 7.4, y tengo el siguiente problema: necesito guardar en una variable el resultado de una consulta generada dinámicamente, ya ...
  #1 (permalink)  
Antiguo 20/10/2005, 08:25
 
Fecha de Ingreso: abril-2005
Mensajes: 49
Antigüedad: 19 años
Puntos: 0
Pregunta Plpgsql - Necesito ayuda

Estoy haciendo una función en plpgsql 7.4, y tengo el siguiente problema: necesito guardar en una variable el resultado de una consulta generada dinámicamente, ya que la condición (el WHERE) depende de si algunos de los parámetros de entrada son nulos o no.

Probé lo siguiente:

cond := ''apellido_rsocial=''''''||p_apellido||'''''' AND calle''||comp_calle||'' AND altura_domicilio=''||p_altura||'' AND piso''||comp_piso||'' AND depto''||comp_depto;
EXECUTE ''SELECT id_persona INTO res FROM personas WHERE ''||cond;


Donde comp_calle, comp_piso y comp_depto son variables de tipo text, cuyo valor es o bien '' = otra_variable'' o bien '' IS NULL ''.

El problema es que esto no se puede ejecutar. Al intentarlo recibo el mensaje de error EXECUTE of SELECT ... INTO is not implemented yet.

¿Alguien sabe si esto puede ejecutarse el PostgreSQL 8.0 (si se puede, voy a tratar de actualizarlo), o si hay otra forma de hacer lo que necesito?

Desde ya, muchas gracias.
Gabi.
  #2 (permalink)  
Antiguo 20/10/2005, 09:08
 
Fecha de Ingreso: abril-2005
Mensajes: 49
Antigüedad: 19 años
Puntos: 0
Ya lo resolví. La solución es un asco (se aceptan propuestas de mejora) pero funciona.

Solución:
cond := ''apellido_rsocial=''||''''''''||p_apellido||''''' '''||'' AND calle''||comp_calle||'' AND altura_domicilio=''||p_altura||'' AND piso''||comp_piso||'' AND depto''||comp_depto;
qry := ''SELECT * FROM personas WHERE ''||cond;
FOR fila_persona IN EXECUTE qry LOOP
res := fila_persona.id_persona;
END LOOP;


Espero que esto le sirva a alguien más.

Saludos,
Gabi.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:24.