Hola a todos,
La consulta es como consultar por el valor RECORD.atributo , pero donde el atributo no lo escribo directamente, sino que lo leo como string.
Quizas la pregunta no es clara, asi que lo explico con codigo.
Lo importante de la consulta lo marco en rojo.
Código:
FOR r_images IN
SELECT i.*
FROM idarouter.image i
JOIN idarouter.imagequeue iq
ON i.idimage_pk = iq.idimage_fk
LOOP
FOR result IN
select
json_array_elements
(
(
SELECT rr.jsonrule::json->'wherefields' FROM idarouter.routerules rr where rr.idrouterule_pk = idrouterule_
)
) as jsondata
LOOP
SELECT result.jsondata->>'column',
result.jsondata->>'operator',
result.jsondata->>'suboperator',
result.jsondata->>'usecasesensitive',
result.jsondata->>'value'
INTO
column_,
operator_,
suboperator_,
usecasesensitive_,
value_;
RAISE NOTICE 'SHOW THIS :[%]' ,'r_images.'||quote_ident(column_);
-- Lo que busco hacer es esto :
-- IF (r_images.mensaje = 'HOLA' )
--Como pueden ver, la columna mensaje en realidad es "column_"
--O sea, que dentro de la variable column_ esta el nombre de la columna "mensaje"
--y en otra vuelta será otra columna.
IF (r_images.column_ = 'HOLA')
hacer algo;
END IF;
-- Es claro que no puedo usar directamente r_images.column_.
-- Tambien se , que para ejecutar sentencias a partir de un string
-- podria usar quote_ident(column_) con EXECUTE, pero eso es
-- en una sentencia, y aca en este caso, estoy tratando de aplicar sobre
-- RECORD.Atributo.
END LOOP;
END LOOP;
Espero haberme explicado, porque la verdad no se como resolverlo y ya he leido varias lineas de manuales y foros.
Alguna sugerencia ?
Desde ya muchas gracias,