Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Copiado de Tablas (https://www.clubdelphi.com/foros/showthread.php?t=7710)

Ulises 24-02-2004 19:03:57

Copiado de Tablas
 
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

Código:

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

Código:

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

hasta luego.

;)

teletranx 27-02-2004 21:42:04

Respuesta a Ulises
 
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


La franja horaria es GMT +2. Ahora son las 09:25:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi