sql >> データベース >  >> RDS >> PostgreSQL

postgresql、レコードデータ型の列を識別できませんでした

    問題は、パラメータ(db_row)を渡していることです。 )タイプrecord SQLステートメントに変換しますが、そのような値にはSQLエンジンの既知の構造がありません。テーブルタイプにキャストすることもできません。

    醜い回避策の1つは、レコードをテキスト表現にキャストし(type output関数の呼び出しで機能します)、テストを目的のテーブルタイプにキャストすることです。

    これは私が何を意味するかを説明するサンプルコードです:

    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. エラーコード:1215。外部キー制約を追加できません(外部キー)

    2. Product()集計関数

    3. テーブル定義を表示するT-SQLクエリ?

    4. データベース検索用のHTMLコンボボックスに入力されるMySQLENUM値でアポストロフィを使用する