PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

postgresql, không thể xác định cột trong loại dữ liệu bản ghi

Vấn đề là bạn đang truyền một tham số (db_row ) thuộc loại record cho một câu lệnh SQL, nhưng một giá trị như vậy không có cấu trúc nào được biết đến cho công cụ SQL. Bạn thậm chí không thể truyền nó sang loại bảng.

Một cách giải quyết tồi tệ mà tôi có thể nghĩ ra đó là truyền bản ghi sang biểu diễn văn bản của nó (hoạt động với lệnh gọi hàm xuất kiểu) và sau đó truyền thử nghiệm sang loại bảng mong muốn.

Đây là mã mẫu minh họa ý tôi muốn nói:

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. Cách nhanh nhất để cắt ngắn dấu thời gian còn 5 phút trong Postgres là gì?

  2. psycopg2.OperationalError:FATAL:giao thức frontend không được hỗ trợ 1234.5679:máy chủ hỗ trợ từ 2.0 đến 3.0

  3. Làm thế nào để cài đặt các tiện ích mở rộng Postgres khi tạo cơ sở dữ liệu?

  4. Cách thêm số lượng đang chạy vào các hàng trong một 'chuỗi' các ngày liên tiếp

  5. Postgres tạo Bảng với một mảng khóa ngoại