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

sólo para gurus del sqlserver server

Estas en el tema de sólo para gurus del sqlserver server en el foro de SQL Server en Foros del Web. hola a todos Me encuentro liado un poco al no poder crear 25 tablas dentro de un mismo sp, y sobre todo hacer diversas operaciones ...
  #1 (permalink)  
Antiguo 24/12/2010, 06:13
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
sólo para gurus del sqlserver server

hola a todos
Me encuentro liado un poco al no poder crear 25 tablas dentro de un mismo sp, y sobre todo hacer diversas operaciones con cada una de ellas después de creadas,

Me inventé un sp donde acepte como parámetro el nombre para una tabla, entonces dinámicamente empezar a trabajar con ella, pero el error que me sale es que no encuentra esa Tabla . Alguien tiene una mejor idea?
  #2 (permalink)  
Antiguo 24/12/2010, 06:30
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: sólo para gurus del sqlserver server

ojo que lo que intento crear son tablas temporales del tipo #tabla.

Tengo algo así...

Create misp opera_diversas_tablas
(
@nombretabla marchar(255)
)
As
Declare @vl_string varchar (255)
Set @vl_string ='create table '+@nombretabla
Exec(@vl_string )
--hasta aquí me funciona pero cuando quiero hacer un select a la tabla con la sentencia fuera de mi variable @vl_string entonces no le reconoce a la tabla. Es decir...

Select * from @nombretabla
--esto no devuelve nada. De hecho no lo hará xq no he hecho inserts pero lo que me sale es error, que no encuentre la tabla. Se entendió?

de pronto lo recomendado sería formar TODO mi query en una sola variable @vl_string pero no lo hago debido a que es super extenso de 700 líneas de código aprox.

Por favor, sí alguien me puede echar una mano con esto.

Estoy trabajando con las dos versiones de sqlserver 2000 y 2005.

mil gracias a todos!!

LE
  #3 (permalink)  
Antiguo 24/12/2010, 06:33
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: sólo para gurus del sqlserver server

disculpas por las faltas de ortografía y caligrafia esque les escribo del teclado dificultoso de mi teléfono móvil....

Gracias
  #4 (permalink)  
Antiguo 24/12/2010, 07:03
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: sólo para gurus del sqlserver server

hola, la respuesta es simple, cuando creas un query y lo ejecutas desde una variable esta se precompila como un nuevo procedimiento en un nuevo ambito, entonces no podras accederla desde alli, seria algo como tener dos ventanas del Query Analizer (2000) o Management studio y crearas una temporal en una ventana y luego intentaras accederla desde otra, no te dejara, no podras, los ID asociados internos para la sesion de ejecucion y los ambitos son distintos.


espero haberme hecho entender y no estar muy loco. jejeje.

saludos
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #5 (permalink)  
Antiguo 24/12/2010, 08:33
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: sólo para gurus del sqlserver server

Estimado Snaff

Te entendí, pero no habría una alternativa de crearlas dinamicamente este tipo de tablas temporales?

LE
  #6 (permalink)  
Antiguo 24/12/2010, 09:24
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: sólo para gurus del sqlserver server

podrias crearlas como tablas fisicas en la tmpdb lo haces mas optimo y te despreocupas de ella dado que cada vez que reinicies el engine esta bd sera borrada y creada nuevamente o dado el caso tu mismo las borras.

aunque lo que deseas es hacer algo identico a lo siguiente:
Cita:
Declararemos la tabla y pondremos las columnas y los tipos de datos que tendrá:

DECLARE
@TablaTemporal
TABLE
(
ID numeric(18,0) NOT NULL DEFAULT(0)
)

--Insertaremos el contenido que queramos en nuestra tabla temporal

INSERT INTO
@TablaTemporal
(
IdUsuario
)
SELECT
IdUsuario
FROM
Tabla c
With(NoLock)

Ahora ya podemos acceder a la tabla con una simple select:

SELECT * FROM @TablaTemporal

jejeje, sirve mucho, pero en este caso si te fijas es una variable tipo tabla.
creo que las dos son buenas opciones.

saludos
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #7 (permalink)  
Antiguo 24/12/2010, 10:34
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: sólo para gurus del sqlserver server

Ok. permiteme probarlo y luego te comento como me fue... ;)

Etiquetas: server
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 06:05.