La consulta dentro de una función de PostgreSQL no reconoce sus parámetros.
Tengo una función en la que quiero generar una consulta dinámica a través de una variable de tipo character varying, lo hago (por ejemplo):
my_var character varying := 'SELECT * FROM table WHERE table.column = param_name';
Y cuando ejecuto mi función y llega a la instrucción:
EXECUTE my_var INTO result_var;
Obtengo el error:
ERROR: la columna «param_name» no existe
Nota: he verificado repetidamente que el param_name
en la consulta coincida con el nombre del parámetro.
davy.ai
Solución al error de consulta dinámica en PostgreSQL
Si obtiene el error “la columna no existe” al ejecutar una consulta dinámica en PostgreSQL, puede ser porque el nombre del parámetro en su consulta no está interpolado correctamente. Aquí hay algunas cosas que puede revisar para solucionar este error:
Utilice marcadores de posición: En lugar de interpolar directamente el nombre del parámetro en su consulta, utilice marcadores de posición como
$$
o?
. Por ejemplo, puede definir su consulta de esta manera:o
Luego, al ejecutar la consulta, puede pasar el valor del parámetro como un argumento a la instrucción
EXECUTE
como se muestra a continuación:Esto asegurará que el parámetro se interpoló correctamente en la consulta.
Utilice la función
format
: Otra forma de asegurarse de que el parámetro se interpoló correctamente es mediante la funciónformat
. Aquí hay un ejemplo:Esto asegurará que el parámetro esté correctamente entrecomillado e interpolado en la consulta.
Siguiendo estos pasos, debería poder generar una consulta dinámica en PostgreSQL sin obtener el error “la columna no existe”.