Mario Reyna escribió:
> 
> Hola.. este es mi primer post..

Hola, bienvenido (otra vez)

> alguien que me puede ayudar
> por necesidades de diseño se cuenta con "n" esquemas en postgresql 8.4 que se 
> comportan exactamente igual (cuentan con las mismas tablas, funciones etc);
> 
> La idea principal es que las funciones que se desarrollen, sean ejecutadas en 
> automaticos, en los esquemas almacenados en una tabla .

Este diseño es muy malo, porque te está forzando a cometer cosas como la
que sugieres.

> mi idea inicial seria hacer una funcion  en pl/pgsql
> que se posicione atravez del search_path y compile le funcion.
> usando el commando de la consula \i

\i es una orden de psql, la cual es una aplicación cliente; como tal, no
puede funcionar en plpgsql, que es una implementación totalmente del
lado del servidor.

Si quieres hacer una función que escriba a otra función (cosa que no te
recomiendo; más bien, deberías replantear tu diseño para evitar estas
cosas), puedes hacer algo de este estilo:

create or replace function toastcheck_writer(text) returns text language 
plpgsql as $ff$

BEGIN

  /* our function header */
  func = $f$
        CREATE OR REPLACE FUNCTION toastcheck__$f$ || $1 || $f$() RETURNS void 
LANGUAGE plpgsql AS $$
         DECLARE
         BEGIN
         PERFORM 'some sin';
$f$;

   /* And this is our constant footer */
   func := func || $f$ col, sqlerrm;
            END;
         END LOOP;
         END;
        $$;
  $f$;

  RETURN func;
  END;
$ff$;


Esto de arriba, lo que hace es retornar un string que contiene un CREATE
FUNCTION para crear una nueva función.  Si quieres puedes usar 'EXECUTE
func' al final en lugar del RETURN, y en ese caso se va a ejecutar (y
por lo tanto se creará esa función).

Te lo planteo sólo como una idea, pero no debes creer ni remotamente que
te estoy sugiriendo usarla.

-- 
Alvaro Herrera       Vendo parcela en Valdivia:
http://valdivia.vivastreet.cl/loteos-lotes+valdivia/parcela-en-cabo-blanco--valdivia/19288372
"La verdad no siempre es bonita, pero el hambre de ella sí"
--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
    (envía "unregister TuDirecciónDeCorreo" a majord...@postgresql.org)

Responder a