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