Postgresql 从函数返回0或1行
函数是否可以返回一条记录,但如果结果集为空,则返回零条记录。例如: 如果我有一个不包含任何数据的空表Postgresql 从函数返回0或1行,postgresql,Postgresql,函数是否可以返回一条记录,但如果结果集为空,则返回零条记录。例如: 如果我有一个不包含任何数据的空表 CREATE TABLE Foo ( FooID SERIAL CONSTRAINT PK_Foo PRIMARY KEY, FooValue INTEGER NOT NULL ); 。。。还有一个函数 CREATE OR REPLACE FUNCTION GET_OneFoo() RETURNS Foo AS $$ SELECT FooID,
CREATE TABLE Foo
(
FooID SERIAL CONSTRAINT PK_Foo PRIMARY KEY,
FooValue INTEGER NOT NULL
);
。。。还有一个函数
CREATE OR REPLACE FUNCTION GET_OneFoo()
RETURNS Foo
AS $$
SELECT
FooID,
FooValue
FROM
Foo
LIMIT 1
$$ LANGUAGE SQL;
。。。然后
SELECT GET_OneFoo()
。。。结果
Total query runtime: 11 ms.
1 row retrieved.
Total query runtime: 10 ms.
0 rows retrieved.
。。。然而
SELECT
FooID,
FooValue
FROM
Foo
LIMIT 1
。。。结果
Total query runtime: 11 ms.
1 row retrieved.
Total query runtime: 10 ms.
0 rows retrieved.
代替
RETURNS Foo
后者返回一个复合类型:
谢谢你的回答。我想可能是这样的。这对性能有任何影响吗?它确实会稍微影响您可以调用函数的上下文,并且在
SELECT
列表中调用函数时会更改语义-返回零行与返回空行不同。不过,这不会对性能产生任何显著影响。