Creacion de tablas con nombre dinámicos

19/01/2004 - 14:59 por [-H-] | Informe spam
Lo que necesito hacer, es guardar ciertos datos en una
tabla "temporal" de modo que esa tabla para cada sesión
sea diferente.
Mi aplicación se lanza contra SQL Server desde oracle
forms builder, utilizando el parche OCA y ODBC.
He probado a crear una tabla temporal local cada vez que
un usuario inicia la aplicación, y luego insertar datos
en ella, el problema es que a la hora de insertarlos me
casca el programa. SI utilizo una tabla temporal global
la cosa si funciona, pero si hay más de un usuario a la
vez, pueden actuar los dos sobre la misma tabla y eso no
lo puedo permitir.
Pienso que puede ser que al utilizar ODBC, la tabla local
que creo se destruye nada mas volver la consulta ,
imagino que pq el forms builder "desconecta" después de
la instrucción SQL y se interpreta una finalización de
sesión... (si no alguien puede decirme porque me ocurre
eso? pq no veo las tablas locales??)
El caso es que la única solución que se me ocurre es ir
creando tablas normales (no temporales), pero con
distinto nombre para cada usuario.
Esto es, asignar un nombre de tabla dinamicamente según
se conectan los usuarios, y actuar luego para cada
usuario con su tabla correspondiente.
¿Cómo puedo crear esas tablas? Lo ideal seria tener una
variable numérica en algún sitio(una tabla probablemente)
que me sirva de identificador de tablas y el cual vaya
incrementando a medida que entran usuarios.
por ejemplo, para el primero que se conecte que se cree
una tabla llamada "1" para el segundo "2" para el
enésimo "n"...
muchas gracias.

Preguntas similare

Leer las respuestas

#1 ulises
19/01/2004 - 16:46 | Informe spam
Me imagino que debe estar trabajando en forma desconectada por ello es
que se elimina las tablas temporales, pero no veo porque no crear una
tabla normal y tener dentro de ella un campo que identifique al
usuario de manera de tener la data diferenciada.

Saludos,
Ulises

On Mon, 19 Jan 2004 05:59:01 -0800, "[-H-]"
wrote:

Lo que necesito hacer, es guardar ciertos datos en una
tabla "temporal" de modo que esa tabla para cada sesión
sea diferente.
Mi aplicación se lanza contra SQL Server desde oracle
forms builder, utilizando el parche OCA y ODBC.
He probado a crear una tabla temporal local cada vez que
un usuario inicia la aplicación, y luego insertar datos
en ella, el problema es que a la hora de insertarlos me
casca el programa. SI utilizo una tabla temporal global
la cosa si funciona, pero si hay más de un usuario a la
vez, pueden actuar los dos sobre la misma tabla y eso no
lo puedo permitir.
Pienso que puede ser que al utilizar ODBC, la tabla local
que creo se destruye nada mas volver la consulta ,
imagino que pq el forms builder "desconecta" después de
la instrucción SQL y se interpreta una finalización de
sesión... (si no alguien puede decirme porque me ocurre
eso? pq no veo las tablas locales??)
El caso es que la única solución que se me ocurre es ir
creando tablas normales (no temporales), pero con
distinto nombre para cada usuario.
Esto es, asignar un nombre de tabla dinamicamente según
se conectan los usuarios, y actuar luego para cada
usuario con su tabla correspondiente.
¿Cómo puedo crear esas tablas? Lo ideal seria tener una
variable numérica en algún sitio(una tabla probablemente)
que me sirva de identificador de tablas y el cual vaya
incrementando a medida que entran usuarios.
por ejemplo, para el primero que se conecte que se cree
una tabla llamada "1" para el segundo "2" para el
enésimo "n"...
muchas gracias.
Respuesta Responder a este mensaje
#2 Anonimo
19/01/2004 - 17:24 | Informe spam
Gracias por contestar.
Si, tu idea se me había pasado por la cabeza, pero me
parecía menos "elegante" (en comparación con el uso de
las tablas temporales por lo menos, de modo que cada una
guarde solo info sobre un usuario),parece que al final
será la opción que tenga que tomar...(no se si le gustará
al director del proyecto... ;), pero ahora ya después de
oir una segunda opinión parece que suena mejor)
muchas gracias y un saludo.
Me imagino que debe estar trabajando en forma


desconectada por ello es
que se elimina las tablas temporales, pero no veo porque


no crear una
tabla normal y tener dentro de ella un campo que


identifique al
usuario de manera de tener la data diferenciada.

Saludos,
Ulises

On Mon, 19 Jan 2004 05:59:01 -0800, "[-H-]"
wrote:

Lo que necesito hacer, es guardar ciertos datos en una
tabla "temporal" de modo que esa tabla para cada sesión
sea diferente.
Mi aplicación se lanza contra SQL Server desde oracle
forms builder, utilizando el parche OCA y ODBC.
He probado a crear una tabla temporal local cada vez




que
un usuario inicia la aplicación, y luego insertar datos
en ella, el problema es que a la hora de insertarlos me
casca el programa. SI utilizo una tabla temporal global
la cosa si funciona, pero si hay más de un usuario a la
vez, pueden actuar los dos sobre la misma tabla y eso




no
lo puedo permitir.
Pienso que puede ser que al utilizar ODBC, la tabla




local
que creo se destruye nada mas volver la consulta ,
imagino que pq el forms builder "desconecta" después de
la instrucción SQL y se interpreta una finalización de
sesión... (si no alguien puede decirme porque me ocurre
eso? pq no veo las tablas locales??)
El caso es que la única solución que se me ocurre es ir
creando tablas normales (no temporales), pero con
distinto nombre para cada usuario.
Esto es, asignar un nombre de tabla dinamicamente según
se conectan los usuarios, y actuar luego para cada
usuario con su tabla correspondiente.
¿Cómo puedo crear esas tablas? Lo ideal seria tener una
variable numérica en algún sitio(una tabla




probablemente)
que me sirva de identificador de tablas y el cual vaya
incrementando a medida que entran usuarios.
por ejemplo, para el primero que se conecte que se cree
una tabla llamada "1" para el segundo "2" para el
enésimo "n"...
muchas gracias.



.

Respuesta Responder a este mensaje
#3 [-H-]
19/01/2004 - 17:32 | Informe spam
Hola otra vez.
Acabo de acordarme pq descarte esa opción.
A la aplicación pueden entrar dos personas distintas con
el mismo nombre de usuario, a la vez, pero con diferente
sesión, y yo necesito diferenciar entre sesiones de un
mismo usuario también, por lo que añadir un identificador
de usuario a la tabla de variables no me vale, a no ser
que utilice nombres secundarios dinámicos que
identifiquen cada sesión guardados en una tabla.
No es nada cómodo de gestionar...
Si a alguien se el ocurre alguna cosa...
gracias,
Me imagino que debe estar trabajando en forma


desconectada por ello es
que se elimina las tablas temporales, pero no veo porque


no crear una
tabla normal y tener dentro de ella un campo que


identifique al
usuario de manera de tener la data diferenciada.

Saludos,
Ulises

On Mon, 19 Jan 2004 05:59:01 -0800, "[-H-]"
wrote:

Lo que necesito hacer, es guardar ciertos datos en una
tabla "temporal" de modo que esa tabla para cada sesión
sea diferente.
Mi aplicación se lanza contra SQL Server desde oracle
forms builder, utilizando el parche OCA y ODBC.
He probado a crear una tabla temporal local cada vez




que
un usuario inicia la aplicación, y luego insertar datos
en ella, el problema es que a la hora de insertarlos me
casca el programa. SI utilizo una tabla temporal global
la cosa si funciona, pero si hay más de un usuario a la
vez, pueden actuar los dos sobre la misma tabla y eso




no
lo puedo permitir.
Pienso que puede ser que al utilizar ODBC, la tabla




local
que creo se destruye nada mas volver la consulta ,
imagino que pq el forms builder "desconecta" después de
la instrucción SQL y se interpreta una finalización de
sesión... (si no alguien puede decirme porque me ocurre
eso? pq no veo las tablas locales??)
El caso es que la única solución que se me ocurre es ir
creando tablas normales (no temporales), pero con
distinto nombre para cada usuario.
Esto es, asignar un nombre de tabla dinamicamente según
se conectan los usuarios, y actuar luego para cada
usuario con su tabla correspondiente.
¿Cómo puedo crear esas tablas? Lo ideal seria tener una
variable numérica en algún sitio(una tabla




probablemente)
que me sirva de identificador de tablas y el cual vaya
incrementando a medida que entran usuarios.
por ejemplo, para el primero que se conecte que se cree
una tabla llamada "1" para el segundo "2" para el
enésimo "n"...
muchas gracias.



.

Respuesta Responder a este mensaje
#4 Miguel Egea
19/01/2004 - 19:33 | Informe spam
yo usaría una tabla única para todos los usuarios con un campo que los
distinga, una 'falsa' tabla temporal., sobre todo si no vas a usar muchos
datos. Puedes usar el spid como identificador para conocer cual es tu
conexión (solamente con select @@spid lo conoces y llenar ese campo es por
tanto muy sencillo.
Programa un job que periodicamente elimine los datos de los spids que no
estén conectados..


=Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad
http://www.microsoft.com/spain/tech...9-USER.asp
==
"[-H-]" escribió en el mensaje
news:068601c3de94$643c5ef0$
Lo que necesito hacer, es guardar ciertos datos en una
tabla "temporal" de modo que esa tabla para cada sesión
sea diferente.
Mi aplicación se lanza contra SQL Server desde oracle
forms builder, utilizando el parche OCA y ODBC.
He probado a crear una tabla temporal local cada vez que
un usuario inicia la aplicación, y luego insertar datos
en ella, el problema es que a la hora de insertarlos me
casca el programa. SI utilizo una tabla temporal global
la cosa si funciona, pero si hay más de un usuario a la
vez, pueden actuar los dos sobre la misma tabla y eso no
lo puedo permitir.
Pienso que puede ser que al utilizar ODBC, la tabla local
que creo se destruye nada mas volver la consulta ,
imagino que pq el forms builder "desconecta" después de
la instrucción SQL y se interpreta una finalización de
sesión... (si no alguien puede decirme porque me ocurre
eso? pq no veo las tablas locales??)
El caso es que la única solución que se me ocurre es ir
creando tablas normales (no temporales), pero con
distinto nombre para cada usuario.
Esto es, asignar un nombre de tabla dinamicamente según
se conectan los usuarios, y actuar luego para cada
usuario con su tabla correspondiente.
¿Cómo puedo crear esas tablas? Lo ideal seria tener una
variable numérica en algún sitio(una tabla probablemente)
que me sirva de identificador de tablas y el cual vaya
incrementando a medida que entran usuarios.
por ejemplo, para el primero que se conecte que se cree
una tabla llamada "1" para el segundo "2" para el
enésimo "n"...
muchas gracias.
Respuesta Responder a este mensaje
#5 Miguel Egea
19/01/2004 - 19:34 | Informe spam
como te comentaba en el mensaje con el valor de spid obvias ese problema.



=Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad
http://www.microsoft.com/spain/tech...9-USER.asp
==
"[-H-]" escribió en el mensaje
news:058601c3dea9$cfd1fa70$
Hola otra vez.
Acabo de acordarme pq descarte esa opción.
A la aplicación pueden entrar dos personas distintas con
el mismo nombre de usuario, a la vez, pero con diferente
sesión, y yo necesito diferenciar entre sesiones de un
mismo usuario también, por lo que añadir un identificador
de usuario a la tabla de variables no me vale, a no ser
que utilice nombres secundarios dinámicos que
identifiquen cada sesión guardados en una tabla.
No es nada cómodo de gestionar...
Si a alguien se el ocurre alguna cosa...
gracias,
Me imagino que debe estar trabajando en forma


desconectada por ello es
que se elimina las tablas temporales, pero no veo porque


no crear una
tabla normal y tener dentro de ella un campo que


identifique al
usuario de manera de tener la data diferenciada.

Saludos,
Ulises

On Mon, 19 Jan 2004 05:59:01 -0800, "[-H-]"
wrote:

Lo que necesito hacer, es guardar ciertos datos en una
tabla "temporal" de modo que esa tabla para cada sesión
sea diferente.
Mi aplicación se lanza contra SQL Server desde oracle
forms builder, utilizando el parche OCA y ODBC.
He probado a crear una tabla temporal local cada vez




que
un usuario inicia la aplicación, y luego insertar datos
en ella, el problema es que a la hora de insertarlos me
casca el programa. SI utilizo una tabla temporal global
la cosa si funciona, pero si hay más de un usuario a la
vez, pueden actuar los dos sobre la misma tabla y eso




no
lo puedo permitir.
Pienso que puede ser que al utilizar ODBC, la tabla




local
que creo se destruye nada mas volver la consulta ,
imagino que pq el forms builder "desconecta" después de
la instrucción SQL y se interpreta una finalización de
sesión... (si no alguien puede decirme porque me ocurre
eso? pq no veo las tablas locales??)
El caso es que la única solución que se me ocurre es ir
creando tablas normales (no temporales), pero con
distinto nombre para cada usuario.
Esto es, asignar un nombre de tabla dinamicamente según
se conectan los usuarios, y actuar luego para cada
usuario con su tabla correspondiente.
¿Cómo puedo crear esas tablas? Lo ideal seria tener una
variable numérica en algún sitio(una tabla




probablemente)
que me sirva de identificador de tablas y el cual vaya
incrementando a medida que entran usuarios.
por ejemplo, para el primero que se conecte que se cree
una tabla llamada "1" para el segundo "2" para el
enésimo "n"...
muchas gracias.



.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida