PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

postgresql, não foi possível identificar a coluna no tipo de dados do registro


O problema é que você está passando um parâmetro (db_row ) do tipo record a uma instrução SQL, mas esse valor não tem estrutura conhecida para o mecanismo SQL. Você não pode nem convertê-lo para o tipo de tabela.

Uma solução feia eu posso pensar nisso para converter o registro em sua representação de texto (que funciona com uma chamada para a função de saída de tipo) e, em seguida, lançar o teste para o tipo de tabela desejado.

Este é um código de exemplo que ilustra o que quero dizer:
DO $$
DECLARE
   r record;
   n name;
BEGIN
   /* find all tables with a column "oid" */
   FOR r IN
      SELECT t.*
         FROM pg_class t
              JOIN pg_attribute a ON a.attrelid = t.oid
         WHERE a.attname = 'oid'
   LOOP
      /* get the table name */
      EXECUTE format(
                 'SELECT ($1::text::%s).relname',
                 'pg_class'
              ) INTO n USING r;
      RAISE NOTICE 'Table name: %', n;
   END LOOP;
END;
$$;