• Domingo 22 de Diciembre de 2024, 13:07

Autor Tema:  Ayuda  (Leído 1549 veces)

luiquroj

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Ayuda
« en: Jueves 28 de Abril de 2005, 16:21 »
0
Queria saber si me podian ayudar a resolver un proceso ya que no me sale

Basicamente es que inserte en la tabla histo_ordenes_x_cliente usando 2 cursores, aqui dejo las tablas relacionadas a dicho proceso y el proceso a como lo tengo por si alguien me puede ayudar

CREATE TABLE CLIENTES(
   ID_CLIENTE   VARCHAR2(3)   NOT NULL
   DESC_CLIENTE   VARCHAR2(30)   NOT NULL
   TELEFONO   VARCHAR2(15)   NOT NULL
   DIRECCION   VARCHAR2(30)   NOT NULL
   ID_SEGMENTO   VARCHAR2(10)   NOT NULL
   CREDITO      VARCHAR2(30)   NOT NULL
   ESTADO      VARCHAR2(1)   NOT NULL);

CREATE TABLE SEGMENTO(
   ID_SEGMENTO   VARCHAR2(10)   NOT NULL
   DESC_SEGMENTO   VARCHAR2(20)   NOT NULL);

CREATE TABLLE ORDEN_MAESTRO(
    ID_ORDEN      VARCHAR2(5)   NOT NULL
    ID_CLIENTE      VARCHAR2(3)   NOT NULL
    ID_SUCURSAL      VARCHAR2(6)   NOT NULL
    FEC_ORDEN      DATE      NOT NULL
    FEC_ENVIO      DATE      NOT NULL
    EMPLEADO_REGISTRO   VARCHAR2(10)   NOT NULL
    TOTAL      NUMBER(15)   NOT NULL
    ORDEN_COMPLETA   VARCHAR2(1)   NOT NULL
    FORMA_PAGO      VARCHAR2(1)   NOT NULL);

CREATE TABLE SUCURSAL(
   ID_SUCURSAL   VARCHAR2(6)   NOT NULL
   DESC_SUCURSAL   VARCHAR2(30)   NOT NULL
   DIRECCION   VARCHAR2(30)   NOT NULL);

CREATE TABLLE ORDEN_MAESTRO(
    ID_ORDEN      VARCHAR2(5)   NOT NULL
    ID_CLIENTE      VARCHAR2(3)   NOT NULL
    ID_SUCURSAL      VARCHAR2(6)   NOT NULL
    FEC_ORDEN      DATE      NOT NULL
    FEC_ENVIO      DATE      NOT NULL
    EMPLEADO_REGISTRO   VARCHAR2(10)   NOT NULL
    TOTAL      NUMBER(15)   NOT NULL
    ORDEN_COMPLETA   VARCHAR2(1)   NOT NULL
    FORMA_PAGO      VARCHAR2(1)   NOT NULL);

HISTO_ORDENES_X_CLIENTE(
       AÑO       DATE      NOT NULL
       MES       DATE      NOT NULL
       ID_CLIENTE    VARCHAR2(10)   NOT NULL
       TOTAL_ORDEN    NUMBER(20)   NOT NULL
       NUMERO_DE_ORDENES NUMBER(15)   NOT NULL);

CREATE OR REPLACE PROCEDURE HISTO
   BEGIN
   DECLARE
      CURSOR C_CLIENTECREDITO IS
      SELECT * FROM CLIENTES
      WHERE CLIENTES.CREDITO != '1' AND
      CLIENTES.ESTADO = 'A' AND
      CLIENTES.ID_SEGMENTO=SEGMENTO.ID_SEGMENTO AND
      SEGMENTO.DESC_SEGMENTO != 'EDUCACION';
      
      CURSOR MAESTROCLIENTE IS
      SELECT * FROM ORDEN_MAESTRO
      WHERE  ORDEN_MAESTRO.ORDEN_COMPLETA='S' AND
      ORDEN_MAESTRO.ID_SUCURSAL=SUCURSAL.ID_SUCURSAL AND
      SUCURSAL.DESC_SUCURSAL='SAN JOSE' AND
      (BETWEEN TO_DATE('DD-MM-YY','01-01-05)AND TO_DATE('DD-MM-YY','31-12-05')) AND
      C_CLIENTECREDITO.ID_CLIENTE=clientes.ID_CLIENTE;               REVISAR

      V_TOT_ORDENES   ORDEN_MAESTRO.TOTAL%TYPE;
      V_NUM_ORDENES   NUMBER(30):=0;
      CONTADOR   NUMBER(30):=0;
   BEGIN
      OPEN C_CLIENTECREDITO;
      OPEN MAESTROCLIENTE;
         SELECT COUNT(ID_CLIENTE) INTO CONTADOR;
         FOR I IN I.CONTADOR                         REVISAR
            FETCH C_CLIENTECREDITO IN ID_EMPLEADO;
            IF C_CLIENTECREDITO.ID_EMPLEADO = NULL THEN
               MESSAGE('EL REGISTRO ES NULO');
            END IF;
            SELECT COUNT(MAESTROCLIENTE.ID_ORDEN) INTO V_NUM_ORDENES;
            SELECT SUM(MAESTROCLIENTE.TOTAL) INTO V_TOT_ORDENES;
            INSERT INTO HISTO_ORDENES_X_CLIENTE VALUES (TO_DATE('YYYY','2005'),TO_DATE('MM','04'),
            C_CLIENTECREDITO.ID_CLIENTE, V_TOT_ORDENES,V__NUM_ORDENES);
            COMMIT;
         END LOOP;
      CLOSE C_CLIENTECREDITO;
      CLOSE MAESTROCLIENTE;
   
EXCEPTION
   WHEN NO_DATA_FOUND THEN
   RAISE_APPLICATION_ERROR(-20000,'Error, no hay registros según seleccion');
   PAUSE;

   WHEN TOO_MANY_ROWS THEN
   RAISE_APPLICATION_ERROR(-20000,'Error, MUCHOS DATOS CON LA MISMA CONDICIÓN');
   PAUSE;

   WHEN others THEN
   RAISE_APPLICATION_ERROR(-20000,'Error indefinido');
   PAUSE;

END;
END;
/

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Ayuda
« Respuesta #1 en: Jueves 9 de Junio de 2005, 14:43 »
0
si fueras mas preciso con tus preguntas tendrias algunas o mejores respuestas.
http://foros.solocodigo.com/index.php?showtopic=5710
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io