Tabla temporal en SP

21/11/2005 - 18:12 por Adrian | Informe spam
Estoy haciendo un SP que realiza una consulta, para realizar la
consulta utiliza una tabla temporal. La tabla temporal que utiliza
depende de una variable, segun el valor de la variable es la consulta
que realizo para llenar la tabla temporal. El problema que es que
cuando quiero guardar el SP me dice que ya esta siendo utilizada la
tabla temporal.

Ej

IF (X=1)
Begin
Select * Into #Temporal From tabla1 ...
End
ELSE
Begin
Select * Into #Temporal From tabla2 ...
End

Select * From #Temporal Inner join .

Como puedo resolverlo.
Gracias
Adrian

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
21/11/2005 - 18:47 | Informe spam
Adrian,

Yo te recomiendo armar dos procedimientos, uno para cada valor de la
variable y que cada cual cree su tabla temporal y selecciona desde ella.

IF (X=1)
Begin
exec sp_p1 ...
End
ELSE
Begin
exec sp_p2 ...
End
go


AMB
"Adrian" wrote:

Estoy haciendo un SP que realiza una consulta, para realizar la
consulta utiliza una tabla temporal. La tabla temporal que utiliza
depende de una variable, segun el valor de la variable es la consulta
que realizo para llenar la tabla temporal. El problema que es que
cuando quiero guardar el SP me dice que ya esta siendo utilizada la
tabla temporal.

Ej

IF (X=1)
Begin
Select * Into #Temporal From tabla1 ...
End
ELSE
Begin
Select * Into #Temporal From tabla2 ...
End

Select * From #Temporal Inner join .

Como puedo resolverlo.
Gracias
Adrian


Respuesta Responder a este mensaje
#2 Alejandro Mesa
21/11/2005 - 18:51 | Informe spam
Me olvide decir, que de esa forma evitaras recompilaciones del sp y tambien
obtendras mejor plan de ejecucion por proceso.

En caso de que las dos tablas sean iguales, mejor dicho, en caso de que el
resultado de las sentencias "select" sean similares, puedes crear la tabla
primero y usar i"insert into ... select ...".

create table #temporal (...)

IF (X=1)
Begin
insert into #temporal (c1, ..., cn)
Select c1, ..., cn From tabla1 ...
End
ELSE
Begin
insert into #temporal (c1, ..., cn)
Select c1, ..., cn From tabla2 ...
End
go


AMB

"Alejandro Mesa" wrote:

Adrian,

Yo te recomiendo armar dos procedimientos, uno para cada valor de la
variable y que cada cual cree su tabla temporal y selecciona desde ella.

IF (X=1)
Begin
exec sp_p1 ...
End
ELSE
Begin
exec sp_p2 ...
End
go


AMB
"Adrian" wrote:

> Estoy haciendo un SP que realiza una consulta, para realizar la
> consulta utiliza una tabla temporal. La tabla temporal que utiliza
> depende de una variable, segun el valor de la variable es la consulta
> que realizo para llenar la tabla temporal. El problema que es que
> cuando quiero guardar el SP me dice que ya esta siendo utilizada la
> tabla temporal.
>
> Ej
>
> IF (X=1)
> Begin
> Select * Into #Temporal From tabla1 ...
> End
> ELSE
> Begin
> Select * Into #Temporal From tabla2 ...
> End
>
> Select * From #Temporal Inner join .
>
> Como puedo resolverlo.
> Gracias
> Adrian
>
>
Respuesta Responder a este mensaje
#3 Adrian
21/11/2005 - 19:18 | Informe spam
Voy a utilizar el insert into...
Muchas gracias por la ayuda.
Adrian
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida