Re: Duda con un select y alias

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>
Cc: Jairo Graterón <jgrateron(at)gmail(dot)com>, Anthony Sotolongo <asotolongo(at)gmail(dot)com>, "Fontana Daniel C (Desartec S(dot)R(dot)L(dot))" <desartecsrl(at)gmail(dot)com>, Juan José Santamaría Flecha <juanjo(dot)santamaria(at)gmail(dot)com>, pgsql-es-ayuda <pgsql-es-ayuda(at)lists(dot)postgresql(dot)org>
Subject: Re: Duda con un select y alias
Date: 2020-09-07 16:49:28
Message-ID: 20200907164928.GA6484@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Guillermo E. Villanueva escribió:
> Creo que entiendo la duda de Daniel, el quiere que por cada tupla del
> resultado se llame una única vez a una función y a ese resultado poder
> usarlo en mas de una proyección de columna y por ejemplo en el where y en
> este caso con lo que indica Jairo no lo solucionaría.s

Perdona que te contradiga, pero la solución de Jairo lo soluciona
perfectamente. Es fácil verlo haciendo que la función deje una traza en
cada ejecución:

=# create function f_articulo_get_precio(int) returns text language
plpgsql as $$ begin raise notice 'buu!'; return '12342020/09/07'; end
$$;
CREATE FUNCTION

por ejemplo, invocándola una vez vemos la traza:

=# select f_articulo_get_precio(1234);
NOTICE: buu!
f_articulo_get_precio
───────────────────────
12342020/09/07
(1 fila)

y ahora ejecutamos como Jairo sugiere, la traza aparece una única vez:

=# with T1 as
(select f_articulo_get_precio(1234) as ls_numero)
select substr(ls_numero, 8, 13), substr(ls_numero, 21, 10)
from t1 ;
NOTICE: buu!
substr │ substr
─────────┼────────
0/09/07 │
(1 fila)

> (* tampoco lo puede resolver con lo que indica Anthony*)

Dicho lo anterior, la solución de Anthony es la realmente inteligente.

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Diego 2020-09-07 21:44:11 Re: Extensión pldebugger para Postgresql 12 en Centos 7, no encontrada
Previous Message Lucas Luengas 2020-09-07 13:16:10 Extensión pldebugger para Postgresql 12 en Centos 7, no encontrada