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

Store procedure .,,ayudaa porfas

Estas en el tema de Store procedure .,,ayudaa porfas en el foro de Bases de Datos General en Foros del Web. holas miren tengo una tabla principal que tiene los siguientes campos select distinct tipo_email,tema2_email,0 as EnProceso,0 as Atrasado,0 as Cerrado,0 as CerradoAtrasado, count (*)as Total ...
  #1 (permalink)  
Antiguo 10/11/2004, 11:56
 
Fecha de Ingreso: septiembre-2004
Mensajes: 141
Antigüedad: 19 años, 7 meses
Puntos: 0
Store procedure .,,ayudaa porfas

holas miren tengo una tabla principal que tiene los siguientes campos


select distinct tipo_email,tema2_email,0 as EnProceso,0 as Atrasado,0 as Cerrado,0 as CerradoAtrasado, count (*)as Total
into ##r1
from profile
group by tema2_email,tipo_email




y cree un store procedure para que se llene, si lo hago ha mano funciona rebien pero cuando lo meto al store procedure me dice que ##r2 ya existe y no me deja seguir

CREATE PROCEDURE spx2 aS



select
count(*)as total ,p.tipo_email
into ##r2
from profile p
where estado1=1
group by p.tipo_email

update ##r1 set Enproceso=r2.total
from ##r1 r1, ##r2 r2
where r1.tipo_email=r2.tipo_email



---------------------------------

delete ##r2
drop table ##r2

select
count(*) total ,p.tipo_email
into ##r2
from profile p
where estado1=2
group by p.tipo_email


update ##r1 set Atrasado=r2.total
from ##r1 r1, ##r2 r2
where r1.tipo_email=r2.tipo_email


delete ##r2
drop table ##r2

select
count(*) total ,p.tipo_email
into ##r2
from profile p
where estado1=3
group by p.tipo_email


update ##r1 set Cerrado=r2.total
from ##r1 r1, ##r2 r2
where r1.tipo_email=r2.tipo_email


delete ##r2
drop table ##r2

select
count(*) total ,p.tipo_email
into ##r2
from profile p
where estado1=4
group by p.tipo_email


update ##r1 set CerradoAtrasado=r2.total
from ##r1 r1, ##r2 r2
where r1.tipo_email=r2.tipo_email



GO



la idea de la tabla temporal es poqe logro llenar la primeras y las ultimas filas pero las intermedias no hay forma no se como llenarlas ya que en un consulta normal de sql salen hacia abajo y no hacia el lado omo yo necesito

si alguien puede ayudarme con esto porfa
  #2 (permalink)  
Antiguo 11/11/2004, 00:46
 
Fecha de Ingreso: octubre-2004
Mensajes: 258
Antigüedad: 19 años, 6 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
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 19:25.