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

Consultas dinámicas en plpgsql

Estas en el tema de Consultas dinámicas en plpgsql en el foro de PostgreSQL en Foros del Web. Hola soy nueva en esto del postgresql, y necesito realizar consultas dinamicas en plpgsql, especificamente esto es lo que necesito: Hacer una consulta dinámica en ...
  #1 (permalink)  
Antiguo 06/03/2012, 10:49
Avatar de acsanchez  
Fecha de Ingreso: marzo-2012
Mensajes: 1
Antigüedad: 12 años, 2 meses
Puntos: 0
Consultas dinámicas en plpgsql

Hola soy nueva en esto del postgresql, y necesito realizar consultas dinamicas en plpgsql, especificamente esto es lo que necesito:

Hacer una consulta dinámica en plpgsql donde se le pase por parámetro la tabla y un atributo.
Hacer una consulta dinámica en plpgsql donde se le pase un valor de una constante en el where de una consulta select.
  #2 (permalink)  
Antiguo 08/03/2012, 06:15
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Consultas dinámicas en plpgsql

lo que tienes que hacer es armar tu sentencia sql concatenada en una variable de texto.
una vez está lista, utilizas el comando execute. ejemplo:
Código SQL:
Ver original
  1. SQL := 'select *from '||var_tabla||' where '||var_campo||' = '||valor_variable;
Código SQL:
Ver original
  1. EXECUTE SQL;

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 12/03/2012, 17:58
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Consultas dinámicas en plpgsql

Con la idea de huesos, hice una pequeña funcion, alli en vez del execute uso el return query execute....

Código:
CREATE OR REPLACE FUNCTION pa_consultaprueba(xtabla text)
  RETURNS SETOF record AS
$BODY$
declare
sql text;
begin
sql := 'select codigo::text as codigo, descri::text as descri from '||xtabla;
return query execute sql;
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
y lo invocas asi

Código:
select * from pa_consultaprueba('tabla')
as(codigo text, descri text);

Etiquetas: plpgsql, postgres, select, sql
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 01:31.