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 original
DECLARE 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;