CASE statement and SETOF values - Mailing list pgsql-general

From Christian Schoenebeck
Subject CASE statement and SETOF values
Date
Msg-id 200607242327.57474.cschoene@stud.hs-heilbronn.de
Whole thread Raw
Responses Re: CASE statement and SETOF values  (Stephan Szabo <sszabo@megazone.bigpanda.com>)
List pgsql-general
HI!

Consider the following server side function:

CREATE FUNCTION my_function(int4) RETURNS SETOF int8 AS
$BODY$
SELECT
CASE WHEN (some_condition)
     THEN (
         SELECT ... -- arbitrary select (returning row(s) of int8 values)
     )
     ELSE (
         SELECT ... -- arbitrary select (returning row(s) of int8 values)
     )
END
$BODY$
LANGUAGE 'sql' VOLATILE;

This function works fine if one of the two inner SELECT statements returns
exactly one result (one row), but fails whenever one of them returns more
than one result / rows.

What is the reason? I mean the function is declared as returning "SETOF int8",
so why does it expect a scalar?

CU
Christian

pgsql-general by date:

Previous
From: "Roderick A. Anderson"
Date:
Subject: Does a GRANT on a table cascade/implied to its SEQUENCES
Next
From: Stephan Szabo
Date:
Subject: Re: CASE statement and SETOF values