Postgresql - 返回表的函数出错

fab*_*onr 1 postgresql plpgsql

我刚刚定义了这个函数来返回给定表中的所有列名:

create or replace function GET_COLUMNS(in tbl_name character varying(30))
returns table(colunas character varying) as $$
begin
    SELECT column_name
    FROM information_schema.columns
    WHERE table_schema = 'Main'
    AND table_name   = tbl_name;
end;
$$ language 'plpgsql'
Run Code Online (Sandbox Code Playgroud)

但是当我使用它调用它时,select * from get_columns('tabfuncionarios');我收到了以下错误:

ERROR:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT:  PL/pgSQL function get_columns(character varying) line 3 at SQL statement
Run Code Online (Sandbox Code Playgroud)

我正在使用postgresql 9.4.5版本

a_h*_*ame 6

你不需要plpgsql这个。一个普通的sql函数会做:

create or replace function GET_COLUMNS(in tbl_name character varying(30))
   returns table(colunas character varying) 
as 
$$
    SELECT column_name
    FROM information_schema.columns
    WHERE table_schema = 'Main'
    AND table_name   = tbl_name;
$$ 
language sql;
Run Code Online (Sandbox Code Playgroud)

另外:语言名称是一个标识符。不要把它放在单引号中。