Re: Problema para construir una funcion dinamicamente

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Leonel Fuentes Marrero <lfmarrero(at)uci(dot)cu>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Problema para construir una funcion dinamicamente
Date: 2012-02-08 20:24:38
Message-ID: 1328732316-sup-1071@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Excerpts from Leonel Fuentes Marrero's message of mié feb 08 16:45:14 -0300 2012:
> Vale, gracias a todos por la ayuda y saludos para los que conosco y me conocen, terminé haciendolo de una forma que no se si será la más optima pero funciona y aquí va...

Saludos :-)

> CREATE OR REPLACE FUNCTION check_table_schema(_schema text)
> RETURNS void AS
> $BODY$
> begin
> ------------------------------------------------------------------------
> execute 'CREATE OR REPLACE FUNCTION provisional(_schema text)
> RETURNS void AS ' || '$' || 'BODY' || '$' || '
> declare
> -- variables
> begin
> -- ....
> end;
> ' || '$' || 'BODY' || '$' || '

No entiendo para qué haces esto. La gracia de los delimitadores de $ es
que puedes usar cualquiera para no tener que enredarte con las comillas
y concatenación. Si usaste $BODY$ en la función check_table_schema,
puedes usar cualquier otra cosa para la función provisional; por ej. las
tres líneas de arriba pueden quedar así:

execute 'CREATE OR REPLACE FUNCTION provisional(_schema text)
RETURNS void AS $provisional$
declare

Eso te ahora comillas y por lo tanto es mucho más legible.

Por ejemplo mira esta función:
http://alvherre.livejournal.com/4404.html
Si te fijas, estoy usando delimitadores $f$ y $ff$ además de la comilla '

--
Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message A J 2012-02-08 22:20:11 RE: Agotamiento del Espacio en Disco al Ejecutar Conulta
Previous Message Leonel Fuentes Marrero 2012-02-08 19:45:14 Re: Problema para construir una funcion dinamicamente