Skip site navigation (1) Skip section navigation (2)

Re: Crear Funciones en PG

From: Anthony <asotolongo(at)uci(dot)cu>
To: Aland Laines <aland(dot)laines(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Crear Funciones en PG
Date: 2012-08-06 22:54:08
Message-ID: 50204B10.5080805@uci.cu (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
El 06/08/2012 18:37, Aland Laines escribió:
>
> Hola a todos, hace poco que estoy usando postgres.
>
> Estoy viendo lo de funciones y quise crear esta:
>
> ----------------------------
> CREATE OR REPLACE FUNCTION adecuar_publicacion() RETURNS boolean as $BODY$
> DECLARE
> maximo integer;
> BEGIN
> maximo =(select max("IdeReg") from "Publicacion")::integer;
> if(maximo is null) then
> maximo=0;
> end if;
> maximo=maximo+1;
> DROP SEQUENCE "Publicacion_IdeReg_seq";
> CREATE SEQUENCE "Publicacion_IdeReg_seq"
>  INCREMENT 1
>  MINVALUE 1
>  MAXVALUE 9223372036854775807
> *  START maximo*
>  CACHE 1;
> ALTER TABLE "Publicacion_IdeReg_seq"
> OWNER TO postgres;
> ALTER TABLE "Publicacion" ADD CONSTRAINT "IdeReg" PRIMARY KEY("IdeReg" );
> ALTER TABLE "Publicacion" alter column "IdeReg" set default 
> nextval('"Publicacion_IdeReg_seq"'::regclass);
> UPDATE "Publicacion" set "ANULADO" = null WHERE "ANULADO" = '';
> UPDATE "Publicacion" set "NroCar" = null WHERE "NroCar" = '';
> UPDATE "Publicacion" set genero = null WHERE genero = '';
> if found then
> return true;
> else
> return false;
> end if;
> END;
> $BODY$
> LANGUAGE 'plpgsql';
> -------------------------------------------------------
>
>
> El problema esta  en la linea *START maximo*  me dice que tengo un 
> error de sintaxis, quiero saber como pasarle el valor de la variable 
> *maximo* para que no me arroje error de sintaxis, gracias por su ayuda.
>
> *Aland Laines Calonge*
> Twitter: @lainessolutions
> http://about.me/aland.laines
>
>
Hola al parecer no te permite ejecutar una sentencia con parametros, 
bueno mira empaca todo lo de "SEQUENCE" en un texto y luego ejecuta eso con
execute tutexto;
algo mas o menos asi

tutexto:='
CREATE SEQUENCE "Publicacion_IdeReg_seq"
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
*  START  ' || maximo::text || '
*
  CACHE 1';
execute tutexto;

saludos





10mo. ANIVERSARIO DE LA CREACION DE LA UNIVERSIDAD DE LAS CIENCIAS INFORMATICAS...
CONECTADOS AL FUTURO, CONECTADOS A LA REVOLUCION

http://www.uci.cu
http://www.facebook.com/universidad.uci
http://www.flickr.com/photos/universidad_uci

In response to

pgsql-es-ayuda by date

Next:From: Jorge CastellanosDate: 2012-08-06 23:02:30
Subject: Re: Auto incrementar con Serial
Previous:From: Aland LainesDate: 2012-08-06 22:37:46
Subject: Crear Funciones en PG

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group