RE: ayuda con trigger que llama a un procedimiento

From: "Fernando Hevia" <fhevia(at)ip-tel(dot)com(dot)ar>
To: "'Arcel Labrada Batista'" <alabradab(at)uci(dot)cu>, 'Oswaldo Hernández' <listas(at)soft-com(dot)es>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>, "'Eduardo Morras'" <emorras(at)s21sec(dot)com>
Subject: RE: ayuda con trigger que llama a un procedimiento
Date: 2010-01-27 16:42:33
Message-ID: A8A2D0F7E5824EDAB7AE84AAD2BAE744@iptel.com.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

> -----Mensaje original-----
> De: Arcel Labrada Batista
>
...
> begin
>
>
> create table public.tb_estudiante_"||NEW.id||() INHERITS
> (tb_estudiante);
>
> return new;
> end;
>
> $body$
> LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
>
> y el problema esta en la concatenación, me da un error que dice:
>
> ERROR: error de sintaxis en o cerca de «||» at character 30
> QUERY: create table "tb_estudiante_"|| $1 ||() INHERITS
> (tb_estudiante)
> CONTEXT: SQL statement in PL/PgSQL function
> "f_crear_tablas_replicas" near line 7
>

Para ejecutar SQL dinámico en plpgsql debes usar EXECUTE.
Ejemplo:

EXECUTE 'create table public.tb_estudiante_' || NEW.id || '() INHERITS
(tb_estudiante)';

Slds,
Fernando.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message German Gomez 2010-01-27 18:21:59 FW:
Previous Message Arcel Labrada Batista 2010-01-27 16:25:30 ayuda con trigger que llama a un procedimiento