How can I create null value from function call with no results?

From: Seref Arikan <serefarikan(at)gmail(dot)com>
To: PG-General Mailing List <pgsql-general(at)postgresql(dot)org>
Subject: How can I create null value from function call with no results?
Date: 2014-07-30 18:13:00
Message-ID: CA+4Thdo__L=X4o5hAO8p_9rMgnao93Ah62gQXx9-p4_WxmkGkg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Greetings,
I want to call a function using a column of a table as the parameter and
return the parameter and function results together.
The problem is, when the function returns an empty row my select statement
that uses the function returns an empty row as well.

The following simplified snippet demonstrates the behaviour I'm trying to
change:

create or replace function test_empty_row(p_instance_id integer)
RETURNS TABLE (instance_id_int INTEGER, valstring TEXT)
AS
$$
BEGIN
return query SELECT 0, 'nothing'::text where 1 = 2;
END;
$$ LANGUAGE plpgsql;

select 1,test_empty_row(1); (this is actually "SELECT A.somefield,
myfunc(A.somefield) from my_table A" in my code)

The query above returns 0 rows. Instead of that I'd like to get back
1, null,null
when the query in the function returns zero results

I've been trying to do this in a number of ways for some time now, but I
guess I've run out of brain cells for today.

Regards
Seref

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Pavel Stehule 2014-07-30 18:18:07 Re: How can I create null value from function call with no results?
Previous Message Kevin Goess 2014-07-30 17:51:14 free RAM not being used for page cache