3

関数が 1 つのレコードを返すことは可能ですが、空の結果セットがある場合はゼロのレコードを返します。例えば:

データが含まれていない空のテーブルがある場合...

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.

... でも ...

SELECT
    FooID,
    FooValue
FROM
    Foo
LIMIT 1

...結果は...

Total query runtime: 10 ms.
0 rows retrieved.
4

1 に答える 1