Re: Let-bindings in SQL statements - Mailing list pgsql-general

From Szymon Guz
Subject Re: Let-bindings in SQL statements
Date
Msg-id CAFjNrYuZczVbVJ6sBSw3psAg9qYk1qHoqhFhD_hFLiXJKcw43g@mail.gmail.com
Whole thread Raw
In response to Let-bindings in SQL statements  (Jon Smark <jon.smark@yahoo.com>)
List pgsql-general


On 26 January 2012 15:37, Jon Smark <jon.smark@yahoo.com> wrote:
Hi,

Is it possible to do the equivalent of let-bindings in a pure SQL function?
I have a SELECT that invokes "now" multiple times.  It would be nicer
to do it only once and reuse the value.  Something like this:

LET right_now = SELECT now () IN
SELECT * FROM my_table WHERE right_now >= start AND ...

In PL/pgSQL this is easy, but I wonder about SQL...

Thanks in advance!
Jon


In fact now() is a little bit tricky here. now() returns the time when the transaction started, so if you run `begin;` and call now() multiple times (even in different queries, but within the same transaction), the function will return the same value.

regards
Szymon

pgsql-general by date:

Previous
From: Jon Smark
Date:
Subject: Let-bindings in SQL statements
Next
From: Volodymyr Kostyrko
Date:
Subject: Re: How to push predicate down