sql >> Databasteknik >  >> RDS >> PostgreSQL

postgresql, kunde inte identifiera kolumn i postdatatypen

Problemet är att du skickar en parameter (db_row ) av typen record till en SQL-sats, men ett sådant värde har ingen känd struktur för SQL-motorn. Du kan inte ens casta den till tabelltypen.

En ful lösning jag kan tänka mig att casta posten till dess textrepresentation (som fungerar med ett anrop till typutgångsfunktionen) och sedan kasta testet till önskad tabelltyp.

Detta är exempelkod som illustrerar vad jag menar:

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. 2 sätt att returnera rader som endast innehåller icke-alfanumeriska tecken i MariaDB

  2. PHP, hämta data från databasen

  3. Gå med i tre bord med MySQL

  4. Heroku - hur drar man data från databasen till den lokala databasen?