Oracle - StoreProcedure

 
Vista:

StoreProcedure

Publicado por Daniel M (2 intervenciones) el 02/08/2007 00:21:57
Alguien podra asesorarme para desplegar esto?:

Tengo una tabla llamada ag_bodega_taller en la cual estan registrados mas de 500 Centros de Atencion. A esta tabla se le tienen que dar de alta tres marcas, aqui estan los inserts:

--NOKIA
insert into ag_bodega_taller (cod_tienda,cod_garantia,cod_marca,cod_bodega,cod_taller,usu_ult_mod,fec_ult_mod)
values ('6515' , '004','1' ,'9999','600PL', 'SYS', SYSDATE);

--MOTOROLA
insert into ag_bodega_taller
(cod_tienda,cod_garantia,cod_marca,cod_bodega,cod_taller,usu_ult_mod,fec_ult_mod)
values ('6515' , '004','2' ,'9999','300', 'SYS', SYSDATE);

--SONY/ERICCSON
insert into ag_bodega_taller
(cod_tienda,cod_garantia,cod_marca,cod_bodega,cod_taller,usu_ult_mod,fec_ult_mod)
values ('6515' , '004','3' ,'9999','400', 'SYS', SYSDATE);

El valor cod_tienda es el codigo de los puntos de servicio, por ejemplo este es el '6515', para no hacer manualmente estos insert a los mas de 500 puntos de servicio necesito hacer un StoreProcedure el cual solamente entre a la BD para buscar los cod_tienda.

Y me genere un script automaticamente para los 500 puntos de servicio para visualizarlo en consola, posteriormente en el TOAD correr ese script generado para ahora si insertar las marcas en la tabla ag_bodega_taller.

Esto es lo que llevo del StoreProcedure tratando de usar un cursor:

CREATE OR REPLACE PROCEDURE SP_SCRIPTPS IS
ptsServ varchar;
cadena1 varchar;
cadena2 varchar;
cadena3 varchar;

CURSOR c1 is
select cod_tienda FROM ag_bodega_taller;

BEGIN
OPEN c1;
FETCH c1 INTO ptsServ;

/*NOKIA*/
cadena1 := "insert into ag_bodega_taller (cod_tienda,cod_garantia,cod_marca,cod_bodega,cod_taller,usu_ult_mod,fec_ult_mod)
values ('"+@ptsServ+"','004','1','9999','600PL','SYS',SYSDATE);"
DBMS_OUTPUT.PUT_LINE(cadena1);

/*MOTOROLA*/
cadena2 := "insert into ag_bodega_taller (cod_tienda,cod_garantia,cod_marca,cod_bodega,cod_taller,usu_ult_mod,fec_ult_mod)
values ('"+@ptsServ+"','004','2','9999','300','SYS',SYSDATE);"
DBMS_OUTPUT.PUT_LINE(cadena2);

/*SONY/ERICCSON*/
cadena3 := "insert into ag_bodega_taller
(cod_tienda,cod_garantia,cod_marca,cod_bodega,cod_taller,usu_ult_mod,fec_ult_mod)
values ('"+@ptsServ+"','004','3','9999','400','SYS',SYSDATE);"

DBMS_OUTPUT.PUT_LINE(cadena3);

FETCH c1 INTO ptsServ;
END

close c1;

END SP_SCRIPTPS;

Gracias de antemano
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:StoreProcedure

Publicado por Ivan (18 intervenciones) el 02/08/2007 21:15:36
Hola, creo que solo te falta el 'LOOP', y no se por que usas "+@ptsServ+" creo que basta con usar la variable 'ptsServ', prueba con esto y me avisas:

CREATE OR REPLACE PROCEDURE SP_SCRIPTPS IS
ptsServ varchar;
cadena1 varchar;
cadena2 varchar;
cadena3 varchar;

CURSOR c1 is
select cod_tienda FROM ag_bodega_taller;

BEGIN
OPEN c1;
LOOP
FETCH c1 INTO ptsServ;
EXIT WHEN C1%NOTFOUND;
/*NOKIA*/
cadena1 := "insert into ag_bodega_taller (cod_tienda,cod_garantia,cod_marca,cod_bodega,cod_taller,usu_ult_mod,fec_ult_mod)
values (ptsServ,'004','1','9999','600PL','SYS',SYSDATE);"
DBMS_OUTPUT.PUT_LINE(cadena1);

/*MOTOROLA*/
cadena2 := "insert into ag_bodega_taller (cod_tienda,cod_garantia,cod_marca,cod_bodega,cod_taller,usu_ult_mod,fec_ult_mod)
values (ptsServ,'004','2','9999','300','SYS',SYSDATE);"
DBMS_OUTPUT.PUT_LINE(cadena2);

/*SONY/ERICCSON*/
cadena3 := "insert into ag_bodega_taller
(cod_tienda,cod_garantia,cod_marca,cod_bodega,cod_taller,usu_ult_mod,fec_ult_mod)
values (ptsServ,'004','3','9999','400','SYS',SYSDATE);"
DBMS_OUTPUT.PUT_LINE(cadena3);

END LOOP;
close c1;

END SP_SCRIPTPS;
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