Tengo 2 tablas con tres campos en común:
Tabla EMPLEADOS
CRF varcahar2 (13)
AREA number (6)
DEPTO...number (6)
(tiene 257 registros)
Tabla INVENTARIO
RFC varchar2 (13)
AREA number (3)
DEPTO number (3)
(tiene 4382 registros)
1. Donde los campos de RFC y de la tabla EMPLEADOS tienen homoclave (Ejemplo: MACT820925X6A) y en la tabla INVENTARIO el mismo empleado aparece con ceros (Ejemplo: MACT820925000).
2. En la tabla de INVENTARIO puede aparecer el RFC varias veces ya que cada registro corresponde aun bien mueble (escritorio, PC, silla, archiveros, etc..) que tiene en su oficina o cubículo.
3. De los campos AREA en la tabla INVENTARIO solo consta de 3 dígitos (Ejemplo: 110) y en EMPLEADOS son 6 dígitos (Ejemplo: 5110)... sin embargo condicen perfectamente los últimos tres.
4. Delos campos DEPTO en la tabla INVENTARIO solo consta de 3 dígitos (Ejemplo: 105) y en EMPLEADOS son 6 dígitos (Ejemplo: 5000)... donde el ultimo del INVENTARIO es el mismo del primero de EMPLEADOS.
EMPLEADOS
RFC---------------------AREA------------------DEPTO
MACT820925X6A-----5000------------------5110
INVENTARIO
RFC---------------------AREA------------------DEPTO
MACT820925000-----105-------------------110
Lo que necesito es actualizar la tabla INVENTARIO en el campo RFC como el de la tabla EMPLEADOS
EMPLEADOS
RFC---------------------AREA------------------DEPTO
MACT820925X6A-----5000------------------5110
INVENTARIO
RFC---------------------AREA------------------DEPTO
MACT820925X6A-----105-------------------110
necesito un query PL/SQL para ORACLE que me permita hacerlo...
SI LOS 10 PRIEMROS CARACTERES DE LOS RFC SON IGUALES QUE REEMPLACE EL RFC SIN HOMOCLAVE POR EL QUE SI LO TIENE EN TODOS LOS REGISTROS CORRESPONDIENTES...
ESTO ES LO QUE TENGO PERO YA ME ATORES
Código SQL:
Ver originalDECLARE
CURSOR C_INVENTARIO IS
SELECT RFC, DEPTO, AREA
FROM INVENTARIO;
CURSOR C_EMPLEADOS IS
SELECT RFC, DEPTO, AREA
FROM EMPLEADOS;
V_R1 C_INVENTARIO%ROWTYPE;
V_R2 C_EMPLEADOS%ROWTYPE;
REGIS1 VARCHAR2 (13) := ''
BEGIN
OPEN V_R1;
FETCH C_INVENTARIO INTO V_R1;
LOOP
REGIS1:= SUBSTR(V_R1.RFC,1,10)
FETCH C_INVENTARIO INTO V_R1;
EXIT WHEN V_R1%NOTFOUND;
END LOOP;
OPEN V_R2;
FETCH C_EMPLEADOS INTO V_R2;
LOOP
REGIS2:= SUBSTR(V_R1.RFC,1,10)
FETCH C_INVENTARIO INTO V_R1;
EXIT WHEN V_R1%NOTFOUND;
END LOOP;
BEGIN
UPDATE INVENTARIO SET RFC = V_R1.RFC
RFC = REGISTRO
END;
FETCH C_INVENTARIO INTO V_R1;
EXIT WHEN V_R1%NOTFOUND;
END LOOP;
CLOSE V_R1;
END;