如何在PL/pgSQL中使用PostgreSQL信息_模式的结果?

如何在PL/pgSQL中使用PostgreSQL信息_模式的结果?,postgresql,plpgsql,Postgresql,Plpgsql,我正在尝试编写一个通用存储函数,用于查询INFORMATION_模式,并使用该信息访问INFORMATION_模式所描述的表的实际字段值。下面是一段代码,显示了我正在尝试执行的操作: select_sql := 'SELECT * FROM "' || tableName || '" WHERE "' || tablePKey || '" = ''' || key_id || ''';'; FOR existing_rec IN EXECUTE select_sql LOOP descr

我正在尝试编写一个通用存储函数,用于查询INFORMATION_模式,并使用该信息访问INFORMATION_模式所描述的表的实际字段值。下面是一段代码,显示了我正在尝试执行的操作:

select_sql := 'SELECT * FROM "' || tableName || '" WHERE "' || tablePKey || '" = ''' || key_id || ''';';
FOR existing_rec IN EXECUTE select_sql LOOP
    describe_sql := 'SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS
                     WHERE table_name = ''' || tableName || ''';';
    FOR describe_rec IN EXECUTE describe_sql LOOP
        RAISE NOTICE 'table: % field: % value: %', 
                      tableName, 
                      describe_rec.column_name, 
 This is my issue ->  existing_rec."describe_rec.column_name"; <- This is my issue.
    END LOOP;
END LOOP;
select|sql:='select*FROM'| | tableName | | | |',其中“| | tablePKey | |”=''''| | |键id |';
对于执行中的现有\u rec,请选择\u sql循环
描述\u sql:=“从信息\u SCHEMA.COLUMNS中选择列\u名称”
其中表| name='''| | |'''';
对于执行descripe\u sql循环中的descripe\u rec
“提出通知”表:%field:%value:%,
表名,
描述列名称,

这是我的问题->现有记录。“描述记录列名称” 如果我理解正确,您需要表格的内容。这不会存储在任何变量中,但您可以查询表并将结果存储在新变量中:

-- Add this line:
DECLARE _content RECORD;
....
FOR existing_rec IN EXECUTE select_sql LOOP
    describe_sql := 'SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS
                     WHERE table_name = ''' || tableName || ''';';
    FOR describe_rec IN EXECUTE describe_sql LOOP

        -- Add following statement:
        EXECUTE format('SELECT %I FROM %I',
                         describe_rec.column_name,
                         _table) INTO _content;

        RAISE NOTICE 'table: % field: % value: %', 
                      tableName, 
                      describe_rec.column_name, 
                      _content;
    END LOOP;
END LOOP;

另一方面,对于构建
select\u sql
,使用字符串连接可能比使用字符串连接更好。这正是我正在尝试做的。太好了!:)