PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

postgresql, tidak dapat mengidentifikasi kolom dalam tipe data rekaman

Masalahnya adalah Anda melewatkan parameter (db_row ) dari jenis record ke pernyataan SQL, tetapi nilai seperti itu tidak memiliki struktur yang diketahui untuk mesin SQL. Anda bahkan tidak dapat mentransmisikannya ke jenis tabel.

Salah satu solusi buruk yang dapat saya pikirkan adalah untuk mentransmisikan catatan ke representasi teksnya (yang berfungsi dengan panggilan ke fungsi output tipe) dan kemudian melemparkan tes ke tipe tabel yang diinginkan.

Ini adalah contoh kode yang menggambarkan apa yang saya maksud:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendapatkan [pengarsip] versi yang tidak didukung (1.13) di header file saat menjalankan pg_restore

  2. Bagaimana cara menjalankan file SQL di PostgreSQL menggunakan terminal Linux?

  3. Gabungkan kueri pada 50 juta+ tabel baris di PostgreSQL

  4. Bagaimana cara mengindeks kolom array string untuk pg_trgm `'term' % APAPUN (array_column)` kueri?

  5. GroupingError:ERROR:kolom harus muncul di klausa GROUP BY atau digunakan dalam fungsi agregat