我是SQL的新手,所以请尽量不要对我的问题过于挑剔,我需要创建一个函数来返回一个表(例如" machine"),这将有一个名为" aggtablename"的列并且行将填充从数据库派生的值。这是我试过的,以下错误来了....所以请帮助我使我的语法正确,谢谢..
CREATE FUNCTION aggtable() RETURNS TABLE (machineid, serveraggtablename)
AS $table$
BEGIN
RETURN QUERY
SELECT m.machineid, m.serveraggtablename
FROM machine m
END;
$table$
LANGUAGE plpgsql;
select aggtable();
错误:函数aggtable()不存在第1行:选择aggtable(); ^提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
答案 0 :(得分:0)
试试这个
CREATE TYPE machineType as (machineid int, serveraggtable character varying);
CREATE FUNCTION aggtable() RETURNS SETOF machineType AS
'SELECT m.machineid, m.serveraggtablename FROM machine m;'
LANGUAGE 'sql';
SELECT * FROM aggtable();
https://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_PL/pgSQL_functions
答案 1 :(得分:0)