Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 从函数返回0或1行_Postgresql - Fatal编程技术网

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
列表中调用函数时会更改语义-返回零行与返回空行不同。不过,这不会对性能产生任何显著影响。