Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/11/2004, 00:46
RollBack
 
Fecha de Ingreso: octubre-2004
Mensajes: 258
Antigüedad: 19 años, 7 meses
Puntos: 1
Claro amigo, lo que no haces , y debes hacer antes que nada es BORRAR o hacer el DELETE de ##r2.

Tu empiezas el SP sin borrar la tabla temporal, ese es el problema, primero borrala y luego sigues con lo demas, como es temporal , puedes hacer el drop de la tabla , de todas formas puedes hacer un select que si no existe se crea automaticamente. select into ##r1 from tabla2 , pero claro , tu en la temporal debes de tener campos especificos, asi que te recomiendo que hagas un sp donde crea la tabla y luego sigues con tu codigo , algo asi:

create proc spx2 aS
begin
begin tran
exec sp_crea_tabla_##r2
if @@error<>0
begin
rollback tran
raiserror 50000 'ERROR AL CREAR TABLA TEMPORAL'
return -1
end

.............. tu codigo actual...............
........
.........
..........

commit tran
end

Entonces, al inicio del SP llamamos al otro que borra la tabla y la crea, puedes hacer que si existe (haciendo un select en la sysobject) solo le haces el delete, sino existe la creas.

Entonces, cada vez que llamas al SP tuyo, creamos o borramos la temporal y sigues con tu codigo.
Y como ves, en caso de error hacemos un rollback y abortamos asi de esta manera protejemos los datos y todo queda como estaba antes de empezar.

RECUERDA QUE LAS TABLAS TEMPORALES DEBEN BORRARCE AL FINALIZAR LA OPERACION
Buno , espero haberte ayudado
__________________
Salute !!!
RollBack

Última edición por RollBack; 11/11/2004 a las 00:49