sql >> Databáze >  >> RDS >> PostgreSQL

postgresql, nemohl identifikovat sloupec v datovém typu záznamu

Problém je v tom, že předáváte parametr (db_row ) typu record k příkazu SQL, ale taková hodnota nemá žádnou známou strukturu pro stroj SQL. Nemůžete to ani přenést na typ tabulky.

Jedno ošklivé řešení, které mě napadá, přetypovat záznam do textové reprezentace (které funguje s voláním funkce výstupu typu) a poté přenést test na požadovaný typ tabulky.

Toto je ukázkový kód, který ilustruje, co mám na mysli:

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;
$$;



  1. Proč Postgres Allowing Me Have Columns není ve skupině podle?

  2. vyhledávací textové pole mysql c#

  3. Proč tato chyba migrace databáze po upgradu verze django-mptt?

  4. Vyhledávání/dotazy bez rozlišení malých a velkých písmen