0
我正在寻找一种方法来定义允许返回无类型行值的postgres函数。为了讨论的缘故,让我们假设下表存在:postgres:具有无类型返回值的函数
create table foo(
id serial primary key,
value1 varchar(255),
value2 int,
value3 datetime,
value4 boolean
);
我们也有一个功能,可以让我们回到了一些列的结果(这是一个虚构的例子,但在现实中,有很多的连接发生内部我想仅通过使用相关的数据列于最小化):
create or replace function foo_func(col1 text, col2 text) returns
table(?, ?) as
$$
declare
sql text;
begin
sql := 'select ' || col1 || ', ' || col2 || ' from foo'
return execute sql;
end
$$ language plpgsql;
由于列的值取决于所选择的列参数,返回表不能被定义前期。有没有办法返回行而不指定它们的值?我已经看过返回一个光标,但我不确定这是否是最好的选择。
(PostgreSQL的版本可以被定义)
大。我以前没见过这个。我会尝试一下...... – orange 2013-04-24 08:48:18
与仅仅选择整个表相比,我没有注意到任何性能问题,这很好。这当然可能是由于缺少样本或sqlfiddle中的不准确之处。这个返回循环是否比只选择'select'慢? – orange 2013-04-25 13:07:41
@orange sqlfiddle肯定不适合进行测试,因为它只允许非常有限的数据,并且性能差别很大。虽然我对循环没有任何意见。 – 2013-04-25 13:31:12