PDA

Ver la Versión Completa : Copiado de Tablas


Ulises
24-02-2004, 19:03:57
Hola muchachos,

Necesito efectuar copias de algunas tablas dentro de mi bd, el problema es que debo de cambiar el contenido de una de las columnas dentro de los nuevos archivos, en realidad la columna es la que identifica el numero de la empresa dentro de cada una de las tablas.

Quiero realizar esto en firebird mediante sp, pero no se me ocurre, la idea principal es que aun si se cambie la estructura de una de las tablas esta no meta ruido cuando se hagan las copias, es decir copia la nueva estructura.

Gracias de antemano

Ulises

jachguate
24-02-2004, 19:13:32
Insert into tabla2 (col1, col2, col3)
Select col1, col2, col3 + 500
from tabla1;


Hasta luego.

;)

Ulises
24-02-2004, 19:18:02
Gracias por tu respuesta, pero lo que me gustaria es obtener los nombres de los campos y a la vez el contenido de estos para colocarlos en un string y ejecutarlo posteriormente.

No se si han visto como exporta el ibexpert, es algo parecido pero ademas yo quiero cambiar el contenido de una columna.

Slds

Ulises

jachguate
24-02-2004, 19:22:37
Podes basarte en el diccionario de datos. Específicamente en las tablas rdb$relations y rdb$relation_fields, para construir la sentencia al vuelo.

Por supuesto, tendrás que incluir la lógica para identificar la columna que queres cambiar y meter el cambio a mano...

algo como


if (columna = 'LACOLUMNAQUEQUIERO') Then
Sentencia = Sentencia || 'nuevovalor, ';
else
Sentencia = Sentencia || columna || ', ';


hasta luego.

;)

teletranx
27-02-2004, 21:42:04
Uli

Utilizando execute statement de FireBird 1.5 puedes hacer una cadena (String) uniendo el Insert como el select .

Ejemplo
Sql1 = 'Insert Into ' || TABLA || ' (<campos>,'
Sql2 = 'Select <Campo1Key> + 1,';

...
.
....

..
Sql3 = sql1 || sql2 ;
execute statement sql3;

Con eso puedes copiar Registros de la Misma Tabla con diferente key

Juan carlos