Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

modificar secuencias

Estas en el tema de modificar secuencias en el foro de PostgreSQL en Foros del Web. Hola buenas tengo el siguiente porblema, estoy tratando de hacer una funcion en postgres que me cree las secencias de ciertos catalogos de la BD ...
  #1 (permalink)  
Antiguo 19/03/2010, 08:51
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años, 8 meses
Puntos: 0
modificar secuencias

Hola buenas

tengo el siguiente porblema, estoy tratando de hacer una funcion en postgres que me cree las secencias de ciertos catalogos de la BD
pero me encuentro con el siguiente error

syntax error at or near $1 at character 89 postgres

esto solo es una prueba, por que la logica es buscar el id Maximo asignarlo a mi variable y luego setear con el valor de esa variable, el codigo de prueba modificando el serial de una tabla existente es:
Código PHP:
CREATE OR REPLACE FUNCTION modificar()
RETURNS intege AS $$
DECLARE
valor integer;
BEGIN
   SELECT MAX
("ID"INTO valor FROM esquema."TABLA"
   
valor:=valor+1;
   
ALTER SEQUENCE esquema."TABLA_ID_seq" RESTART valor;
   RETURN 
valor;
END;
$$ 
LANGUAGE plpgsql
el erroe me lo tira n el ALTER SEQUENCE , uando cambio el valor de la variable "valor" por un nmero cualquiera no me da error, asi q supongo que es algo de las variables, pero no encuantro el error.

gracias por su ayuda.
  #2 (permalink)  
Antiguo 19/03/2010, 09:58
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: modificar secuencias

Para ejecutar una sentencia DDL (Data Definition Language) que incorpore una variable dinamica, es necesario hacer uso de execute.

Quedaría así

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION modificar()
  2. RETURNS intege AS $$
  3. DECLARE
  4. valor INTEGER;
  5. BEGIN
  6.    SELECT MAX("ID") INTO valor FROM esquema."TABLA";  
  7.    valor:=valor+1;
  8.    EXECUTE 'ALTER SEQUENCE esquema."TABLA_ID_seq" RESTART  ' || valor;
  9.    RETURN valor;
  10. END;
  11. $$ LANGUAGE plpgsql;


saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 19/03/2010, 10:05
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: modificar secuencias

muchas gracias hoy si me funciono.

Etiquetas: modificar, secuencias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:03.