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)
-   -   ¿tablas temporales? (https://www.clubdelphi.com/foros/showthread.php?t=71699)

JXJ 04-01-2011 22:24:42

¿tablas temporales?
 
¡¿que son las tablas temporales y como se usan?


yo entiendo que uno hace un query dijamos
select * clientes y ese resultado se puede asignar a una tabla temporal

pero no se si esa tabla es fisicamente creada y al cerrar el programa
que se conecta a firebird o firebird destruye esa tabla

¿se le puede asignar nombre a esta tabla?

en muchas ocaciones es muy util hacer un query y trabajar como si fuese
una tabla real en la base de datos.

ecfisa 05-01-2011 01:02:20

Hola.

Si no me equivoco te referís a las vistas. Las vistas son tablas virtuales y su uso es similar al de una tabla normal.
Por ejemplo crear una vista:
Código SQL [-]
CREATE VIEW CODIGOS_SIN_REPETIR(CODIGO)  
AS
  SELECT DISTINCT CODIGO FROM CODIGOS;
Aquí tenés información más detallada: CREATE VIEW .

Creo recordar que en La Cara Oculta de Delphi 4 también hay una buena explicación del uso de las vistas.

Saludos.

Combat-F2D 05-01-2011 07:48:40

ojo, no confundir view con tabla temporal, no es lo mismo

ecfisa 05-01-2011 16:21:08

Cita:

Empezado por Combat-F2D (Mensaje 386666)
ojo, no confundir view con tabla temporal, no es lo mismo

Tenés razón, olvidé que se pueden usar en Firebird a partir de la v. 2.1

Creo que debí acostarme más temprano... :)

Saludos.

lucasarts_18 06-01-2011 02:28:52

Amigos:

El mismo IbExpert tiene una opción al momento de crear una tabla, la opción Type (Persistent, Temp: DELETE ROWS, Temp: PRESERVE ROWS). siendo la por defecto la de Persistent (obviamente) :D.

Espero que les sirva, yo por ahora estoy viendo este tema ya que requiero de una tablita de esas.

Lo otro que encuentro bueno y solo lo visto en MS-SQL Server es las variables tipo tabla, que me ha sacado en más de un apuro :rolleyes:

Saludos .-

jdnb01 23-09-2012 02:01:51

Tablas temporales SQL ejemplo
 
Quizas con este codigo podran apreciar un breve ejemplo de usar las tablas temporales y de como podrian ser recorridas, asi he aprendido y o utilizarlas y su alcance

Código SQL [-]
--Aqui creamos la primera tabla temporal "#uno"

create table #uno(   
col_cero int,
col_uno int,
col_dos int)

--Aqui la llenamos con datos manualmente
insert #uno(col_cero,col_uno,col_dos)
values (1,2,3),
(4,5,6),
(7,8,9)
 
--se crea la segunda tabla temporal "#dos"
create table #dos(col_cero2 int, col_uno2 int, col_dos2 int)

--aqui declaramos variables para controlar el while de registro a registro
declare @index int = 1
declare @index_T int
--fijamos en la variable el conteo total de filas en la tabla #uno
 select @index_T = count(col_cero) from #uno  
--comienza el while 
while (@index <= @index_T )
begin
--creo las variables y les asigno el valor que necesito de la tabla #uno
    declare @cero int
    select  top(@index) @cero = col_cero from #uno 
    declare @uno int
    select  top(@index) @uno = col_uno from #uno
    declare @dos int
    select  top(@index) @dos = col_dos from #uno
--lleno la tabla #dos
    insert #dos(#dos.col_cero2,#dos.col_uno2,#dos.col_dos2)
    values(@cero * @cero,@uno * @uno,@dos*@dos) 
--aumento el indice
set @index = @index + 1
end
--se muestran los resultados
select * from #uno
select * from #dos
--se descartan lsa tablas temporales
drop table #uno
drop table #dos

existen muchas maneras de trabajarlas, espero ayudar a alguien con este codigo

birmain 23-09-2012 22:20:34

Tablas temporales
 
Hola a todos.

Yo he empezado a utilizarlas y son de gran utilidad. Trataré de explicar su filosofía: Cuando requerimos una colección de datos de uso temporal, por ejemplo la creación de un conjunto de datos dentro de un stored procedure, para luego en determinado punto del mismo volver a procesarlos son ideales las tablas temporales. No importa que otro usuario al mismo tiempo lance este procedimiento y vuelva a utilizar la tabla temporal. No habrá interferencia, puesto que los datos no son almacenados dentro de la base de datos, sino en los espacios temporales que dicha base utiliza, y que adjudica de forma distinta a cada usuario. Lo único que se guarda dentro de la base de datos es la definición de la tabla temporal, que puede ser persistente, o se pueden borrar los datos de forma automática al terminar la transaction. Respecto a la velocidad de proceso, es notablemente superior en tablas temporales, ya que supongo que si el servido está bien dotado de memoria, esta es utilizada en la medida de lo posible para el almacenamiento de la tabla.


La franja horaria es GMT +2. Ahora son las 14:07:24.

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