在postgresql中创建函数

时间:2014-05-29 16:23:58

标签: sql postgresql

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

2 个答案:

答案 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)

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

尝试添加类型如machineid int。

查看这篇文章

How can a Postgres Stored Function return a table