在postgresql中创建函数

在postgresql中创建函数,sql,postgresql,Sql,Postgresql,我是SQL新手,所以请尽量不要对我的问题过于挑剔,我需要创建一个函数,该函数将返回一个表(例如“machine”),该表将有一个名为“aggtablename”的列,并且这些行将填充来自数据库的值。以下是我尝试的内容,出现了以下错误…请帮助我更正语法,谢谢 CREATE FUNCTION aggtable() RETURNS TABLE (machineid, serveraggtablename) AS $table$ BEGIN RETURN QUERY SEL

我是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(); ^提示:没有与给定名称和参数类型匹配的函数。您可能需要添加显式类型转换

试试这个

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();

返回的表的参数没有任何类型

尝试添加一个类型,例如machineid int

查看此帖子


不鼓励只链接答案,请发布一些代码并解释感谢您的帮助,但是,现在还有一个问题,我更改了语法…现在我得到的错误是:创建类型machineType as(machineid int,ServerAgTable字符变化);CREATE FUNCTION aggtable()将machineType的集合返回为$$BEGIN SELECT id,serveraggtablename FROM machine;完;$$语言“plpgsql”;从aggtable()中选择*;错误:查询没有结果的目标data@user3688338这是另一个问题。如果这个答案解决了张贴的问题,那么接受它。