返回行的简单PostgreSQL函数
如何将一个简单的select查询(如返回行的简单PostgreSQL函数,postgresql,function,stored-procedures,types,Postgresql,Function,Stored Procedures,Types,如何将一个简单的select查询(如select*from customers)转换为pg中的存储过程/函数 我是Postgres的新手,create function customers()as returns table/setof感觉不对,因此这里的问题就来了 我知道程序在pg land中被称为“函数”。因此,create procedure不存在,我唯一的选择是创建视图或函数。问题是create function x()返回一组y返回一行由逗号分隔的值,如果不进行进一步处理,这些值将无法
select*from customers
)转换为pg中的存储过程/函数
我是Postgres的新手,create function customers()as returns table/setof
感觉不对,因此这里的问题就来了
我知道程序在pg land中被称为“函数”。因此,create procedure
不存在,我唯一的选择是创建视图或函数。问题是create function x()返回一组y
返回一行由逗号分隔的值,如果不进行进一步处理,这些值将无法使用(至少我在pgAdmin和Ruby/Sequel中看到了这一点)
create function x()返回表(…)
要求我嵌入我不想嵌入的行定义
我相信所有这些背后都有一个原因,但我很惊讶最常见的用例是如此棘手。未经测试,但应该是正确的:
CREATE OR REPLACE FUNCTION getcustomers() RETURNS SETOF customers AS $$
SELECT * FROM customers;
$$ LANGUAGE sql;
问题是“create function x()返回y的集合”返回一个paren'd
逗号分隔的行值,未经进一步处理无法使用
函数返回一行。要分解为各个列,请使用以下命令调用它:
SELECT * FROM getcustomers();
假设函数定义了正确的返回类型。见:
这应该是一个很好的起点。示例部分介绍了此主题。@rebnoob而不是“不起作用”-指定您尝试的函数的全文、产生的错误消息以及您的PostgreSQL版本。太好了!谢谢欧文和克雷格。这个问题回答得对吗?这很有效,谢谢。但是pg似乎只返回一个带有逗号sep'd值的列,而不是实际的列,这有什么好处?@rebnoob您使用类似于
selectx fromGetCustomers()x
的东西来调用它。您想使用选择getcustomers()代码>或从getcustomers()中选择*代码>。先生。。你是一个绝地武士,是一股值得尊敬的力量!浪费了一天时间去了解问题所在。我调用的函数没有“*from”部分,EF Core给出了关于db模型映射的错误。因为数据是逗号分隔的。谢谢:)我得到这个返回“record”的函数需要一个列定义列表@TheRealChx101:请参阅: