在PostgreSQL上,我需要按字母顺序查看表中的列,所以我使用以下查询:
SELECT column_name, data_type FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'organizations' ORDER BY column_name ASC;
我每天都要用很多次,所以我想创建一个函数:
CREATE OR REPLACE FUNCTION seecols(table_name text)
RETURNS TABLE (column_name varchar, data_type varchar)
AS $func$
DECLARE
_query varchar;
BEGIN
-- Displays columns by alphabetic order
_query := 'SELECT column_name, data_type FROM information_schema.columns WHERE table_name = '''||table_name||''' ';
RETURN QUERY EXECUTE _query;
END;
$func$ LANGUAGE plpgsql;
但当我尝试时:
SELECT seecols('organizations');
我得到:
**structure of query does not match function result type**
我猜"RETURNS TABLE(column_name varchar,data_type varchar)"这一行定义错误,但由于这是我第一次使用plpgsql,我不知道如何使它更动态。
1条答案
按热度按时间v440hwme1#
这里你不需要动态sql也不需要plpgsql,只需要将sql查询嵌入到sql函数中即可:
参见dbfiddle