SQL - tablas temporales -error

 
Vista:
sin imagen de perfil

tablas temporales -error

Publicado por Guillermo Arias (5 intervenciones) el 02/12/2004 00:45:28
Hola , tengo el SP siguiente. Me da un error que ya existe el objeto #cAbonados.
Lo que quiero es que si el valor de @tipo_abo= 9999 haga el select para todos los registros de la tabla Abonados, de lo contrario que lo haga sólo para lo que tengan en la columna tipo_abo el valor del parámetro.

CREATE PROCEDURE rep_contratos @Tipo_abo smallint as
-- para reporte de contratos

-- abonados
if (@Tipo_abo)= 9999
select * into #cAbonados from Abonados
else
select * into #cAbonados from Abonados where Tipo_abo= @Tipo_abo

go
_____________________________________
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:tablas temporales -error

Publicado por Alex (15 intervenciones) el 02/12/2004 14:44:39
Hola;
Sí, lo que ocurre es que SQL Server no toma en cuenta que vas a crear una de las 2 tablas... al hacer el INTO... por lo tanto tienes 2 alternativas:
1- Crea la tabla temporal con sus respectivos campos
create table #cAbonados (atr1 int, atr2 char, etc... )
...y luego en vez de hacer "select * into" haz lo siguiente:
insert into #cAbonados select * from Abonados.....

2- La segunda alternativa es que utilices COALESCE, pues lo que quieres es que si el campo "Tipo_abo" es = de 9999 selecciones todo... por lo tanto tu sp kedaría así:

CREATE PROCEDURE rep_contratos @Tipo_abo smallint as
-- para reporte de contratos

-- abonados
if (@Tipo_abo)= 9999
set @Tipo_abo = null

select * into #cAbonados from Abonados where Tipo_abo = COALESCE (@Tipo_abo, Tipo_abo)

go

...a todo esto, una consulta... para qué tu sp guarda los resultados en la tabla temporal si no los devuelve??... el procedimiento continúa??? bueno... eso, pruébalo...
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar