convertir cursores a INSERT INTO

26/04/2004 - 20:54 por Antonio Ortiz | Informe spam
Hola,

Ojala alguien pueda ayudarme con esto:
cuento con las tablas:

TbaAlmacen (IDAlmacen, ...)
TbaProducto (IDProducto, ...)
TbaExistencia (IDProducto, IDAlmacen, ...)

Cada vez que se guarda un registro de productos, el sistema hace lo
siguiente:
I)
1) Abre un cursor con la lista de almacenes
2) por cada almacen da de alta un registro en la tabla de existencias con
el almacen y producto correspondiente (solo si no existe)

Cuando se da de modifica un almacen, el proceso es el siguiente:
II)
1) Se cicla por cada producto y se da de alta solo si no existe en dicho
almacen

* La relacion entre TbaProducto y TbaAlmacen, es a traves de la tabla
intermedia TbaExistencia


Lo he intentado con Insert Into pero no he podido hacerlo, alguna ayuda?.
Problemas I) y II)


Gracias a todos,


Antonio Ortiz Ramirez
asesor en sistemas
ant@aortiz.net.nospam
www.aortiz.net
www.progvisual.com

Preguntas similare

Leer las respuestas

#1 ulises
26/04/2004 - 23:16 | Informe spam
Para el caso (I) adapta el siguiente script :

create table TbaAlmacen (IDAlmacen int)
create table TbaProducto (IDProducto int)
create table TbaExistencia (IDProducto int, IDAlmacen int)
go
insert into TbaAlmacen values ( 1 )
insert into TbaAlmacen values ( 2 )
insert into TbaAlmacen values ( 3 )
go
create procedure insertTbaProducto
@producto int
as
insert into TbaProducto values ( @producto )
insert into TbaExistencia
select @producto, a.IDAlmacen
from TbaAlmacen a left join TbaExistencia e
on ( a.IdAlmacen = e.IDAlmacen and e.IDProducto =
@producto )
where e.IDAlmacen IS NULL

si se ejecuta el procedimiento almacenado :

exec insertTbaProducto 1
select * from TbaExistencia

resultado :

IDProducto IDAlmacen
1 1
1 2
1 3

(3 row(s) affected)

el caso (II) no lo he entendido.

Saludos,
Ulises


Hola,

Ojala alguien pueda ayudarme con esto:
cuento con las tablas:

TbaAlmacen (IDAlmacen, ...)
TbaProducto (IDProducto, ...)
TbaExistencia (IDProducto, IDAlmacen, ...)

Cada vez que se guarda un registro de productos, el


sistema hace lo
siguiente:
I)
1) Abre un cursor con la lista de almacenes
2) por cada almacen da de alta un registro en la tabla


de existencias con
el almacen y producto correspondiente (solo si no existe)

Cuando se da de modifica un almacen, el proceso es el


siguiente:
II)
1) Se cicla por cada producto y se da de alta solo si


no existe en dicho
almacen

* La relacion entre TbaProducto y TbaAlmacen, es a traves


de la tabla
intermedia TbaExistencia


Lo he intentado con Insert Into pero no he podido


hacerlo, alguna ayuda?.
Problemas I) y II)


Gracias a todos,


Antonio Ortiz Ramirez
asesor en sistemas

www.aortiz.net
www.progvisual.com



.

Respuesta Responder a este mensaje
#2 Antonio Ortiz
27/04/2004 - 17:18 | Informe spam
Gracias Ulises; en el caso II se requiere dar de alta un registro en la
tabla de existencias por cada registro en la tabla de producto, con el
IDAlmacen que se esta modificando o dando de alta.

ejemplo:
Se modifica el almacen IDAlmacen=2

en productos existen:
IDProducto=1
IDProducto=2
IDProducto=3

Se daria de alta en TbaExistencia:
IDProducto=1, IDAlmacen=2
IDProducto=2, IDAlmacen=2
IDProducto=3, IDAlmacen=2

Esto validando que no exista el registro con el IDProducto e IDAlmacen=2


Gracias de nuevo,


Antonio Ortiz Ramirez
asesor en sistemas

www.aortiz.net
www.progvisual.com

"ulises" escribió en el mensaje
news:485901c42bd3$bf6b4a70$
Para el caso (I) adapta el siguiente script :

create table TbaAlmacen (IDAlmacen int)
create table TbaProducto (IDProducto int)
create table TbaExistencia (IDProducto int, IDAlmacen int)
go
insert into TbaAlmacen values ( 1 )
insert into TbaAlmacen values ( 2 )
insert into TbaAlmacen values ( 3 )
go
create procedure insertTbaProducto
@producto int
as
insert into TbaProducto values ( @producto )
insert into TbaExistencia
select @producto, a.IDAlmacen
from TbaAlmacen a left join TbaExistencia e
on ( a.IdAlmacen = e.IDAlmacen and e.IDProducto > @producto )
where e.IDAlmacen IS NULL

si se ejecuta el procedimiento almacenado :

exec insertTbaProducto 1
select * from TbaExistencia

resultado :

IDProducto IDAlmacen
1 1
1 2
1 3

(3 row(s) affected)

el caso (II) no lo he entendido.

Saludos,
Ulises


>Hola,
>
>Ojala alguien pueda ayudarme con esto:
>cuento con las tablas:
>
>TbaAlmacen (IDAlmacen, ...)
>TbaProducto (IDProducto, ...)
>TbaExistencia (IDProducto, IDAlmacen, ...)
>
>Cada vez que se guarda un registro de productos, el
sistema hace lo
>siguiente:
>I)
> 1) Abre un cursor con la lista de almacenes
> 2) por cada almacen da de alta un registro en la tabla
de existencias con
>el almacen y producto correspondiente (solo si no existe)
>
>Cuando se da de modifica un almacen, el proceso es el
siguiente:
>II)
> 1) Se cicla por cada producto y se da de alta solo si
no existe en dicho
>almacen
>
>* La relacion entre TbaProducto y TbaAlmacen, es a traves
de la tabla
>intermedia TbaExistencia
>
>
>Lo he intentado con Insert Into pero no he podido
hacerlo, alguna ayuda?.
>Problemas I) y II)
>
>
>Gracias a todos,
>
>
>Antonio Ortiz Ramirez
>asesor en sistemas
>
>www.aortiz.net
>www.progvisual.com
>
>
>
>.
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida