Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/10/2013, 17:42
valdezmariano
 
Fecha de Ingreso: octubre-2013
Mensajes: 3
Antigüedad: 11 años
Puntos: 0
Pregunta Necesito PL/SQL

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 original
  1. DECLARE
  2.  
  3.       CURSOR    C_INVENTARIO    IS
  4.  
  5.           SELECT RFC, DEPTO, AREA
  6.           FROM INVENTARIO;
  7.  
  8.       CURSOR    C_EMPLEADOS    IS
  9.  
  10.           SELECT RFC, DEPTO, AREA
  11.           FROM EMPLEADOS;
  12.  
  13.       V_R1   C_INVENTARIO%ROWTYPE;
  14.       V_R2   C_EMPLEADOS%ROWTYPE;
  15.  
  16.       REGIS1   VARCHAR2 (13) := ''
  17.  
  18. BEGIN
  19.   OPEN V_R1;
  20.   FETCH C_INVENTARIO INTO V_R1;
  21.   LOOP
  22.     REGIS1:= SUBSTR(V_R1.RFC,1,10)
  23.   FETCH C_INVENTARIO INTO V_R1;
  24.   EXIT WHEN V_R1%NOTFOUND;
  25.   END LOOP;
  26.   OPEN V_R2;
  27.   FETCH C_EMPLEADOS INTO V_R2;
  28.   LOOP
  29.     REGIS2:= SUBSTR(V_R1.RFC,1,10)
  30.   FETCH C_INVENTARIO INTO V_R1;
  31.   EXIT WHEN V_R1%NOTFOUND;
  32.   END LOOP;
  33. BEGIN
  34.     UPDATE INVENTARIO SET RFC = V_R1.RFC
  35.       RFC = REGISTRO
  36.     END;
  37.   FETCH C_INVENTARIO INTO V_R1;
  38.   EXIT WHEN V_R1%NOTFOUND;
  39.   END LOOP;
  40.   CLOSE V_R1;
  41. END;

Última edición por gnzsoloyo; 30/10/2013 a las 19:33 Razón: ACTUALIZACION