类型 sql_identifier 不存在

type sql_identifier does not exis

所以我正在尝试运行这个函数

CREATE OR REPLACE FUNCTION TableIteration() 
  RETURNS TABLE(table_schema text, table_name text)
  LANGUAGE plpgsql
AS
$$
DECLARE 
    tgt_schema varchar;
    list varchar[] := ARRAY[
    'sometext1',
    'sometext2',
    'sometext3',
    'sometext4',
    'sometext5',
    'sometext6',
    'sometext7',
    'sometext8',
    'sometext9'
];
BEGIN
    FOREACH tgt_schema IN ARRAY list
        LOOP
        RETURN QUERY EXECUTE
        'SELECT t.table_schema, t.table_name from information_schema.tables t'; 
        END LOOP;
    END
$$ 

我得到

ERROR: structure of query does not match function result type
Detail: Returned type information_schema.sql_identifier does not match expected type text in column 1.

但是如果我将类型更改为 sql_identifier,我将无法创建函数,因为它说没有这样的类型。所以问题是我该怎么办?

信息模式列的数据类型很奇怪(我认为这是 SQL 标准强制要求的)。只需将它们转换为文本:

'SELECT t.table_schema::text, t.table_name::text from information_schema.tables t';