sql >> Database >  >> RDS >> PostgreSQL

postgresql, kon kolom in recordgegevenstype niet identificeren

Het probleem is dat u een parameter doorgeeft (db_row ) van het type record naar een SQL-instructie, maar een dergelijke waarde heeft geen bekende structuur voor de SQL-engine. Je kunt het niet eens casten naar het tafeltype.

Een lelijke oplossing die ik kan bedenken om het record naar zijn tekstrepresentatie te casten (die werkt met een aanroep naar de type-uitvoerfunctie) en vervolgens de test naar het gewenste tabeltype te casten.

Dit is voorbeeldcode die illustreert wat ik bedoel:

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. Hoe voer je dagelijks automatisch een php-script uit?

  2. scheid door komma's gescheiden waarden en sla op in tabel in sql-server

  3. De primaire sleutel van MySQL wijzigen wanneer er beperkingen zijn voor externe sleutels

  4. Ruby mysql2 meerdere instructies in één query