CREATE OR REPLACE FUNCTION display_columns_data(table_name varchar, columns_to_display varchar[])
RETURNS TABLE (result_row json) AS
$$
BEGIN
RETURN QUERY EXECUTE
'SELECT ' || array_to_string(columns_to_display, ',') || ' FROM ' || table_name;
END;
$$
LANGUAGE plpgsql;
SELECT * FROM display_columns_data('employees', ARRAY['first_name', 'last_name']);
详细信息:返回的类型字符不同(20)与第 1 列中的预期类型 json 不匹配。 其中:SQL 语句“SELECT first_name,last_name FROMEmployees” PL/pgSQL 函数 display_columns_data(character Var变量,character Var变量[]) 第 3 行位于 RETURN QUERY
该方法内的 SQL 查询返回一个结果集,其中包含字符变化(20)或字符串类型的列,这就是您遇到问题的原因。函数 display_columns_data 旨在返回具有 json 类型的单列的表。该问题是由定义的返回类型与实际结果集之间的差异引起的。
尝试使用此代码来定义函数;
CREATE OR REPLACE FUNCTION display_columns_data(table_name varchar, columns_to_display varchar[])
RETURNS TABLE (result_row record) AS
$$
BEGIN
RETURN QUERY EXECUTE
'SELECT ' || array_to_string(columns_to_display, ',') || ' FROM ' || table_name;
END;
$$
LANGUAGE plpgsql;
上述代码中的 RETURNS TABLE 子句指定该函数应生成一个包含名为 result_row 且类型为 record 的单列的表。这将与动态 SQL 查询生成的结果集相匹配,该结果集可能具有不同类型的列,具体取决于输入要显示的列。
希望它有效:)