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

Como crear un procedimiento almacenado que cree una tabla temporal?

Estas en el tema de Como crear un procedimiento almacenado que cree una tabla temporal? en el foro de SQL Server en Foros del Web. Hola a todos tengo el siguiente codigo que al parecer me crea bien la tabla, pero al hacer el select a la tabla temporal me ...
  #1 (permalink)  
Antiguo 04/11/2013, 15:03
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 3 meses
Puntos: 3
Pregunta Como crear un procedimiento almacenado que cree una tabla temporal?

Hola a todos tengo el siguiente codigo que al parecer me crea bien la tabla, pero al hacer el select a la tabla temporal me sale que dicha tabla no existe.
Cita:
CREATE PROCEDURE [dbo].[spTABLE_TEMPORARY_PLAYER]
@Player VARCHAR(10),
@Name VARCHAR(50),
@LastName VARCHAR(50),
@Email VARCHAR(50),
@Password VARCHAR(50),
@Phone VARCHAR(50),
@Zip VARCHAR(50),
@Status VARCHAR(50)
AS
BEGIN
IF OBJECT_ID('tempDB..#PlayerTemp','U') IS NOT NULL
DROP TABLE #PlayerTemp;

SELECT IdPlayer, Player, Name, LastName, Email, Password, IdBook
INTO #PlayerTemp
FROM PLAYER
WHERE Player LIKE @Player AND Name LIKE @Name AND LastName LIKE @LastName AND
Email LIKE @Email AND Password LIKE @Password AND Phone LIKE @Phone AND
Zip LIKE @Zip AND Status = @Status
END

EXEC [dbo].[spTABLE_TEMPORARY_PLAYER] '%p1%','%TEST%','%%','%%','%%','%%','%%','E'
Al hacer este select es donde me da el error.
Cita:
SELECT * FROM [DGSDATA_DEV].dbo.#PlayerTemp
Alguna ayudita por favor ?
  #2 (permalink)  
Antiguo 04/11/2013, 15:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Como crear un procedimiento almacenado que cree una tabla temporal?

usa ##(doble signo de numero) en lugar de #(uno solo) ;) ejem:

IF OBJECT_ID('tempDB..##PlayerTemp','U') IS NOT NULL
DROP TABLE ##PlayerTemp;

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 04/11/2013, 15:38
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 3 meses
Puntos: 3
Pregunta Respuesta: Como crear un procedimiento almacenado que cree una tabla temporal?

Gracias amigo me funciono.... me puedes explicar por que debia de ponerle dos simbolos de numero en vez de uno ?
  #4 (permalink)  
Antiguo 04/11/2013, 15:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Como crear un procedimiento almacenado que cree una tabla temporal?

Cuando creas una tabla con # te la crea solo en la sesion que estas trabajando(digamos en tu ventana de query) si te cambias de ventana de query te dira que esa tabla no existe ya que solo esta activa en la sesion que la creo

cuando usas ## entonces te la crea global, y la puedes acceder desde cualquier sesion en la base de datos, para mejor explicacion aqui un link:

https://www.simple-talk.com/sql/t-sq...in-sql-server/

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 04/11/2013, 15:55
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 3 meses
Puntos: 3
Pregunta Respuesta: Como crear un procedimiento almacenado que cree una tabla temporal?

Gracias amigo muy buen dato

Entonces si yo hago la creación de la tabla temporal por ejemplo desde php debo hacerlo con ##PlayerTemp ?
  #6 (permalink)  
Antiguo 04/11/2013, 16:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Como crear un procedimiento almacenado que cree una tabla temporal?

La verdad no te recomiendo que uses temporales para la interaccion entre web y la base de datos, seria mejor que usaras una tabla normal y que la limpies cada ves que se use.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 04/11/2013, 16:12
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 3 meses
Puntos: 3
Pregunta Respuesta: Como crear un procedimiento almacenado que cree una tabla temporal?

Pero entonces podría hacer la tabla normalmente pero en el procedimiento almacenado ? y xq no se recomienda la tabla temporal, para saber ?
  #8 (permalink)  
Antiguo 04/11/2013, 16:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Como crear un procedimiento almacenado que cree una tabla temporal?

si es para una web supongamos que vas a tener mas de una conexion a tu base de datos, entonces si creas las tablas temporales globales, entonces cada vez que entre un usuario y use esa tabla va a eliminar la informacion que se almacene...digo en el supuesto de que esa tabla se cree dependiendo el usuario....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 04/11/2013, 16:55
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 3 meses
Puntos: 3
Pregunta Respuesta: Como crear un procedimiento almacenado que cree una tabla temporal?

Tienes toda la razon amigo no lo habia pensado asi muchas gracias...

una ultima consulta ...!

Como hago para preguntar en el if si la tabla existe solo le quito los ## ?
osea asi:

Cita:
IF OBJECT_ID('tempDB..PlayerTemp','U') IS NOT NULL
  #10 (permalink)  
Antiguo 04/11/2013, 17:08
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Como crear un procedimiento almacenado que cree una tabla temporal?

ese query es para tablas temporales... seria algo asi:

IF OBJECT_ID('PlayerTemp','U') IS NOT NULL

slaudos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: almacenado, procedimiento, select, tabla
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 07:10.