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:
Espero haberme explicado, porque la verdad no se como resolverlo y ya he leido varias lineas de manuales y foros.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;
Alguna sugerencia ?
Desde ya muchas gracias,