errors PLS-00302: component 'CALLS' must be declared How to solve this

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sandip sen

    #1

    errors PLS-00302: component 'CALLS' must be declared How to solve this

    Code:
    CREATE OR REPLACE PROCEDURE CRIMES.E_PROC
     IS
     v_MOB_COUNTER          NUMBER(10) :=0;
     v_imsi_counter         NUMBER(16) :=0;
     v_imei_counter         NUMBER(16) :=0;
     v_his_counter          NUMBER(16) :=0;
     v_tower_counter        NUMBER(16) :=0;
     v_exists               NUMBER(16) :=0;        /* should we check for duplicate record for each entry */
    -- v_cust_id              NUMBER(10) :=0;
     v_CALLTIME             date;
    -- v_CALTYPE              VARCHAR2(4);
     v_CALLDT               CRIMES.CALLS.call_date%TYPE;
     v_CALLTYPE             VARCHAR2(4);
     v_CUST_COUNTER         NUMBER(10) :=0;
     v_MYNUMBER             CRIMES.CALLS.mobile_no%TYPE;
     v_HIS_NUMBER           CRIMES.CALLS.HIS_NUMBER%TYPE;
     v_SIMID                CRIMES.CALLS.IMSI_NO%TYPE;
     v_PHONEID              CRIMES.CALLS.IMEI_NO%TYPE;
     v_TOWERID              CRIMES.CALLS.START_TOWER_ID%TYPE;
     v_END_BTS_ID           CRIMES.CALLS.END_TOWER_ID%TYPE;
     v_DURATION             CRIMES.CALLS.DURATION%TYPE;
     v_HIS_IMEI             CRIMES.CALLS.HIS_IMEI_NO%TYPE;
     v_HIS_IMSI             CRIMES.CALLS.HIS_IMSI_NO%TYPE;
     v_HIS_START_BTS_ID     CRIMES.CALLS.HIS_START_BTS_ID%TYPE;
     v_HIS_END_BTS_ID       CRIMES.CALLS.HIS_END_BTS_ID%TYPE;
     v_ORIGINATING_NO       CRIMES.CALLS_DUMMY.ORIGINATING_NO%TYPE;
     v_SMSC                 CRIMES.CALLS.SMSC%TYPE;
     v_Roam_Nw              CRIMES.CALLS.Roam_Nw%TYPE;
    
     v_mis_match_format     EXCEPTION;
     CURSOR c1 IS SELECT  MOBILE_NO, HIS_NUMBER, IMSI_NO, IMEI_NO, CALL_DATE, CALL_TYPE,
                         START_TOWER_ID, END_TOWER_ID, DURATION,
                         HIS_IMEI_NO, HIS_IMSI_NO, HIS_START_BTS_ID, HIS_END_BTS_ID, ORIGINATING_NO,SMSC,Roam_Nw
                         FROM CRIMES.calls_dummy;
    --                     where rownum <= 10000 ;
    
     BEGIN
       -- Current Customer Id
       SELECT NVL(MAX(customer_id),0) INTO v_CUST_COUNTER FROM CRIMES.CUSTOMER ;
       IF v_CUST_COUNTER = 0 THEN
          v_CUST_COUNTER := 1;
       ELSE
          v_CUST_COUNTER :=  v_CUST_COUNTER + 1;
       END IF;
       OPEN c1;
       LOOP
       FETCH c1 INTO v_MYNUMBER, v_HIS_NUMBER, v_SIMID, v_PHONEID, v_CALLTIME,
                     v_CALLTYPE, v_TOWERID, v_END_BTS_ID, v_DURATION, v_HIS_IMEI,
                     v_HIS_IMSI, v_HIS_START_BTS_ID, v_HIS_END_BTS_ID, v_ORIGINATING_NO, v_SMSC, v_Roam_Nw;
       EXIT WHEN c1%NOTFOUND;
    
       IF( SUBSTR(v_MYNUMBER,1,2) ='91') THEN
             v_MYNUMBER := TO_NUMBER(TO_CHAR(SUBSTR(v_MYNUMBER,3)));
       END IF;
       IF( SUBSTR(v_HIS_NUMBER,1,2) ='91') THEN
             v_HIS_NUMBER := TO_NUMBER(TO_CHAR(SUBSTR(v_HIS_NUMBER,3)));
       END IF;
       -- for Mobile and Customer Tables
       SELECT COUNT(*) INTO v_MOB_COUNTER FROM CRIMES.MOBILE WHERE mobile_no = v_MYNUMBER;
       IF v_MOB_COUNTER = 0 THEN
          INSERT INTO CRIMES.CUSTOMER (customer_id) VALUES(v_CUST_COUNTER);
          INSERT INTO CRIMES.MOBILE
                 VALUES(v_MYNUMBER, v_CUST_COUNTER,NULL,NULL);
       END IF;
       -- for IMSI and Mobile Table
       SELECT COUNT(*) INTO v_imsi_counter FROM CRIMES.IMSI WHERE imsi_no = v_SIMID;
       IF v_imsi_counter = 0 THEN
          INSERT INTO CRIMES.IMSI VALUES(v_MYNUMBER, v_SIMID, NULL);
       END IF;
       -- for IMEI and Mobile Table
       SELECT COUNT(*) INTO v_imei_counter FROM CRIMES.IMEI WHERE imei_no = v_PHONEID;
       IF v_imei_counter = 0 THEN
          INSERT INTO CRIMES.IMEI VALUES(v_MYNUMBER, v_PHONEID, NULL);
       END IF;
       -- for HIS Number and Mobile Table
       SELECT COUNT(*) INTO v_his_counter FROM CRIMES.HIS_NUMBER WHERE HIS_NUMBER = v_HIS_NUMBER;
       IF v_his_counter = 0 THEN
          INSERT INTO CRIMES.HIS_NUMBER VALUES(v_HIS_NUMBER, v_MYNUMBER);
       END IF;
       -- for Tower
       SELECT COUNT(*) INTO v_tower_counter FROM TOWER WHERE tower_id = v_TOWERID;
       IF v_tower_counter = 0 THEN
          INSERT INTO TOWER(tower_id) VALUES(v_TOWERID);
       END IF;
       SELECT COUNT(*) INTO v_tower_counter FROM TOWER WHERE tower_id = v_END_BTS_ID;
       IF v_tower_counter = 0 THEN
          INSERT INTO TOWER(tower_id) VALUES(v_END_BTS_ID);
       END IF;
    /*
       --IF ((v_v_CALLDT IS NULL) || (v_CALLDT = '00/00/00')) THEN
       IF ((v_CALLTIME IS NULL) OR (v_CALLTIME = '00/00/00')) THEN
            RAISE v_mis_match_format;
       END IF;
       
       v_CALLDT :=  TO_DATE(TO_CHAR(v_CALLTIME),'DD-MM-YY HH24:MI:SS');
       if v_CALLTYPE = '1' then
           v_CALLTYPE := 'MTC';
       end if;
       if v_CALLTYPE = '2' then
           v_CALLTYPE := 'MOC';
       end if;
       if v_CALLTYPE = '3' then
            v_CALLTYPE := 'FORW';
       end if;
       if v_CALLTYPE = '4' then
           v_CALLTYPE := 'ROAM';
       end if;
       if v_CALLTYPE = '8' then
           v_CALLTYPE := 'SMMO';
       end if;
       if v_CALLTYPE = '9' then
          v_CALLTYPE := 'SMMT';
       end if;
    */
       -- for Calls Table
       INSERT INTO CRIMES.abc
              VALUES(v_MYNUMBER, v_HIS_NUMBER, v_SIMID, v_PHONEID, v_CALLTIME,v_CALLTYPE,
                     v_TOWERID,v_END_BTS_ID,v_DURATION,v_HIS_IMEI,v_HIS_IMSI,v_HIS_START_BTS_ID,v_HIS_END_BTS_ID,v_SMSC,v_Roam_Nw);
    
       IF v_CALLTYPE = 'FORW' THEN
          INSERT INTO crimes.ORIGINATE VALUES (v_CALLDT, v_MYNUMBER, v_ORIGINATING_NO);
       END IF;
    
       v_CUST_COUNTER := v_CUST_COUNTER + 1;
       END LOOP;
       COMMIT;
    --   delete from CRIMES.ABC where rownum <= 10000;
       CLOSE c1;
       EXCEPTION
       WHEN v_mis_match_format
            THEN Dbms_Output.PUT_LINE('Mis Match Format');
    END E_PROC;
    /
    Last edited by MMcCarthy; Nov 25 '10, 04:34 PM. Reason: added code tags
  • Jaydeep Paul
    New Member
    • Nov 2010
    • 3

    #2
    the CALLS component must be a table ? If you are using all the columns of the table to define datatypes of the variables why dont you create a record type of that table. like
    Code:
    v_calls_rec CRIMES.CALLS%rowtype;
    and refer variables like
    v_calls_rec.my_number or whatever be the column names
    But first you have to make sure if CALLS is a valid database object

    Comment

    Working...