We help IT Professionals succeed at work.

Datasource pkg

uTab
uTab asked
on
919 Views
Last Modified: 2013-12-12
I have two tables

dbcontacts

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------
 CONTACTID                                 NOT NULL NUMBER
 TAXID                                     NOT NULL VARCHAR2(11)
 INACTIVEFLAG                              NOT NULL CHAR(1)
 PENDINGFLAG                               NOT NULL CHAR(1)
 COMPANYNAME                                        VARCHAR2(50)
 EMAILADDRESS                                       VARCHAR2(50)
 WEBPAGE                                            VARCHAR2(50)
 DENOMPREFID                                        NUMBER
 INTERESTTYPEPREF                                   CHAR(1)
 CITIZEN                                            CHAR(1)
 ISSUEPREFID                                        NUMBER
 LASTINQUIRY                                        NUMBER
 DATELASTINQ                                        DATE
 AVAILTIMESTART                                     DATE
 AVAILTIMEEND                                       DATE
 PERMGRANTED                                        CHAR(1)
 DONTCALL                                           CHAR(1)
 COMMENTFIELD                                       VARCHAR2(2000)

and dbcontactperson

 Name                                      Null?    Type
 ----------------------------------------- -------- --------------
 CONTACTID                                 NOT NULL NUMBER
 CONTACTTYPE                               NOT NULL CHAR(1)
 TAXID                                     NOT NULL VARCHAR2(11)
 PREFIX                                             VARCHAR2(5)
 FIRSTNAME                                 NOT NULL VARCHAR2(20)
 MIDDLENAME                                         VARCHAR2(20)
 LASTNAME                                  NOT NULL VARCHAR2(20)
 SUFFIX                                             VARCHAR2(20)
 ADDRESS1                                  NOT NULL VARCHAR2(50)
 ADDRESS2                                           VARCHAR2(50)
 CITY                                      NOT NULL VARCHAR2(30)
 STATE                                     NOT NULL CHAR(2)
 ZIPCODE                                   NOT NULL VARCHAR2(10)
 WORKPHONE                                          VARCHAR2(14)
 HOMEPHONE                                          VARCHAR2(14)
 FAXNUMBER                                          VARCHAR2(14)
 BIRTHDATE                                          DATE
 MARITALSTATUS                                      CHAR(1)
 DRIVERLICENSENO                                    VARCHAR2(20)
 DRIVERSTATE                                        CHAR(2)
 DENOMID                                            NUMBER

a contacttype can be a primary contactperson, a secondary contact person or tertiary contactperson.  

The datasource pkg is as follows but does not work. Can someone help me make this pkg work?

CREATE OR REPLACE PACKAGE BODY CalBaptist_DataSource AS

--------------------------- REF CURSOR to populate form ------------------------------

  PROCEDURE CONTACTS_QUERY_REFCUR (P_Block_Data   IN OUT CALBAPTIST_DATASOURCE.contacts_cur,
                                   P_Prospects    IN     NUMBER,
                                   P_Marketing    IN     NUMBER,
                                   P_Trust        IN     NUMBER,
                                   P_Retail       IN     NUMBER,
                                   P_Origination  IN     NUMBER,
                                   P_Vendor       IN     NUMBER,
                                   P_Church       IN     NUMBER,
                                   P_Pastor       IN     NUMBER,
                                   P_ContactOnly  IN     NUMBER,
                                   P_Employee     IN     NUMBER,
                                   P_CapitalGifts IN     NUMBER,
                                   P_ChurchLoans  IN     NUMBER,
                                   P_GroupFilter  IN     NUMBER)
  IS

  BEGIN

    OPEN P_Block_Data FOR
      Select C.CONTACTID,       
      C.INACTIVEFLAG,
      C.TAXID,
      C.COMPANYNAME,
      C.EMAILADDRESS,
      C.WEBPAGE,
      C.DENOMPREFID,
      C.INTERESTTYPEPREF,
      C.CITIZEN,
      C.ISSUEPREFID,
      C.LASTINQUIRY,
      C.DATELASTINQ,
      C.COMMENTFIELD,
      C.AVAILTIMESTART,
      C.AVAILTIMEEND,
      C.PERMGRANTED,
      C.DONTCALL,
      C.PENDINGFLAG,
      P.CONTACTID        "PCONTACTID",
      P.CONTACTTYPE        "PCONTACTTYPE",
      P.TAXID        "PTAXID",
      P.PREFIX        "PPREFIX",
      P.FIRSTNAME        "PFIRSTNAME",
      P.MIDDLENAME        "PMIDDLENAME",
      P.LASTNAME        "PLASTNAME",
      P.SUFFIX        "PSUFFIX",
      P.ADDRESS1        "PADDRESS1",
      P.ADDRESS2        "PADDRESS2",
      P.CITY                "PCITY",
      P.STATE        "PSTATE",
      P.ZIPCODE        "PZIPCODE",
      P.WORKPHONE        "PWORKPHONE",
      P.HOMEPHONE        "PHOMEPHONE",
      P.FAXNUMBER        "PFAXNUMBER",
      P.BIRTHDATE        "PBIRTHDATE",
      P.MARITALSTATUS        "PMARITALSTATUS",
      P.DRIVERLICENSENO        "PDRIVERLICENSENO",
      P.DRIVERSTATE        "PDRIVERSTATE",
      P.DENOMID        "PDENOMID",
      S.CONTACTID        "SCONTACTID",
      S.CONTACTTYPE        "SCONTACTTYPE",
      S.TAXID        "STAXID",
      S.PREFIX        "SPREFIX",
      S.FIRSTNAME        "SFIRSTNAME",
      S.MIDDLENAME        "SMIDDLENAME",
      S.LASTNAME        "SLASTNAME",
      S.SUFFIX        "SSUFFIX",
      S.ADDRESS1        "SADDRESS1",
      S.ADDRESS2        "SADDRESS2",
      S.CITY                "SCITY",
      S.STATE        "SSTATE",
      S.ZIPCODE        "SZIPCODE",
      S.WORKPHONE        "SWORKPHONE",
      S.HOMEPHONE        "SHOMEPHONE",
      S.FAXNUMBER        "SFAXNUMBER",
      S.BIRTHDATE        "SBIRTHDATE",
      S.MARITALSTATUS        "SMARITALSTATUS",
      S.DRIVERLICENSENO        "SDRIVERLICENSENO",
      S.DRIVERSTATE        "SDRIVERSTATE",
      S.DENOMID        "SDENOMID",
      T.CONTACTID        "TCONTACTID",
      T.CONTACTTYPE        "TCONTACTTYPE",
      T.TAXID        "TTAXID",
      T.PREFIX        "TPREFIX",
      T.FIRSTNAME        "TFIRSTNAME",
      T.MIDDLENAME        "TMIDDLENAME",
      T.LASTNAME        "TLASTNAME",
      T.SUFFIX        "TSUFFIX",
      T.ADDRESS1        "TADDRESS1",
      T.ADDRESS2        "TADDRESS2",
      T.CITY                "TCITY",
      T.STATE        "TSTATE",
      T.ZIPCODE        "TZIPCODE",
      T.WORKPHONE        "TWORKPHONE",
      T.HOMEPHONE        "THOMEPHONE",
      T.FAXNUMBER        "TFAXNUMBER",
      T.BIRTHDATE        "TBIRTHDATE",
      T.MARITALSTATUS        "TMARITALSTATUS",
      T.DRIVERLICENSENO        "TDRIVERLICENSENO",
      T.DRIVERSTATE        "TDRIVERSTATE",
      T.DENOMID        "TDENOMID"    
      FROM
      GWTSDEV.dbContacts C,
      GWTSDEV.dbContactPerson P,
      GWTSDEV.dbContactPerson S,
      GWTSDEV.dbContactPerson T
     WHERE (C.ContactID =  P.ContactID(+)      AND      P.ContactType(+)      = 'P')
      AND  (C.ContactID =  S.ContactID(+)       AND      S.ContactType(+)      = 'S')
      AND  (C.ContactID =  T.ContactID(+)       AND      T.ContactType(+)      = 'T')
      AND  C.ContactID in (      select distinct dbConcats.ContactID
                                           from   dbConcats
                                           where  dbConcats.CategoryID in  (P_Prospects,
                                                                  P_Marketing,
                                                                 P_Trust,
                                                                  P_Retail,
                                                                  P_Origination,
                                                                  P_Vendor,
                                                                  P_Church,
                                                                  P_Pastor,
                                                                  P_ContactOnly,
                                                                  P_Employee,
                                                                  P_CapitalGifts,
                                                                  P_ChurchLoans,
                                                                  P_GroupFilter ));

  END Contacts_Query_RefCur;
 
----------------------- DML and Locking Procedures  ---------------------------------
-----------------------     Using PL/SQL Tables     ---------------------------------
-----------------------  Work Around for FRM-10766  ---------------------------------

PROCEDURE dbContacts_Query(P_Tab_Data IN OUT Contacts_Tab, P_ContactID IN NUMBER) IS
  i NUMBER;
 
  CURSOR dbContacts_Cur IS      
    SELECT      
        C.CONTACTID,
      C.INACTIVEFLAG,
      C.TAXID,
      C.COMPANYNAME,
      C.EMAILADDRESS,
      C.WEBPAGE,
      C.DENOMPREFID,
      C.INTERESTTYPEPREF,
      C.CITIZEN,
      C.ISSUEPREFID,
      C.LASTINQUIRY,
      C.DATELASTINQ,
      C.COMMENTFIELD,
      C.AVAILTIMESTART,
      C.AVAILTIMEEND,
      C.PERMGRANTED,
      C.DONTCALL,
      C.PENDINGFLAG,
      P.CONTACTID        "PCONTACTID",
      P.CONTACTTYPE        "PCONTACTTYPE",
      P.TAXID        "PTAXID",
      P.PREFIX        "PPREFIX",
      P.FIRSTNAME        "PFIRSTNAME",
      P.MIDDLENAME        "PMIDDLENAME",
      P.LASTNAME        "PLASTNAME",
      P.SUFFIX        "PSUFFIX",
      P.ADDRESS1        "PADDRESS1",
      P.ADDRESS2        "PADDRESS2",
      P.CITY                "PCITY",
      P.STATE        "PSTATE",
      P.ZIPCODE        "PZIPCODE",
      P.WORKPHONE        "PWORKPHONE",
      P.HOMEPHONE        "PHOMEPHONE",
      P.FAXNUMBER        "PFAXNUMBER",
      P.BIRTHDATE        "PBIRTHDATE",
      P.MARITALSTATUS        "PMARITALSTATUS",
      P.DRIVERLICENSENO        "PDRIVERLICENSENO",
      P.DRIVERSTATE        "PDRIVERSTATE",
      P.DENOMID        "PDENOMID",
      S.CONTACTID        "SCONTACTID",
      S.CONTACTTYPE        "SCONTACTTYPE",
      S.TAXID        "STAXID",
      S.PREFIX        "SPREFIX",
      S.FIRSTNAME        "SFIRSTNAME",
      S.MIDDLENAME        "SMIDDLENAME",
      S.LASTNAME        "SLASTNAME",
      S.SUFFIX        "SSUFFIX",
      S.ADDRESS1        "SADDRESS1",
      S.ADDRESS2        "SADDRESS2",
      S.CITY                "SCITY",
      S.STATE        "SSTATE",
      S.ZIPCODE        "SZIPCODE",
      S.WORKPHONE        "SWORKPHONE",
      S.HOMEPHONE        "SHOMEPHONE",
      S.FAXNUMBER        "SFAXNUMBER",
      S.BIRTHDATE        "SBIRTHDATE",
      S.MARITALSTATUS        "SMARITALSTATUS",
      S.DRIVERLICENSENO        "SDRIVERLICENSENO",
      S.DRIVERSTATE        "SDRIVERSTATE",
      S.DENOMID        "SDENOMID",
      T.CONTACTID        "TCONTACTID",
      T.CONTACTTYPE        "TCONTACTTYPE",
      T.TAXID        "TTAXID",
      T.PREFIX        "TPREFIX",
      T.FIRSTNAME        "TFIRSTNAME",
      T.MIDDLENAME        "TMIDDLENAME",
      T.LASTNAME        "TLASTNAME",
      T.SUFFIX        "TSUFFIX",
      T.ADDRESS1        "TADDRESS1",
      T.ADDRESS2        "TADDRESS2",
      T.CITY                "TCITY",
      T.STATE        "TSTATE",
      T.ZIPCODE        "TZIPCODE",
      T.WORKPHONE        "TWORKPHONE",
      T.HOMEPHONE        "THOMEPHONE",
      T.FAXNUMBER        "TFAXNUMBER",
      T.BIRTHDATE        "TBIRTHDATE",
      T.MARITALSTATUS        "TMARITALSTATUS",
      T.DRIVERLICENSENO        "TDRIVERLICENSENO",
      T.DRIVERSTATE        "TDRIVERSTATE",
      T.DENOMID        "TDENOMID"
      FROM
      GWTSDEV.dbContacts C,
      GWTSDEV.dbContactPerson P,
      GWTSDEV.dbContactPerson S,
      GWTSDEV.dbContactPerson T
     WHERE (C.ContactID = P.ContactID(+)      AND  P.ContactType(+)     = 'P')
      AND  (C.ContactID = S.ContactID(+)      AND  S.ContactType(+)        = 'S')
      AND  (C.ContactID = T.ContactID(+)      AND  T.ContactType(+)        = 'T')      
      ORDER  BY P.LastName;  

  BEGIN    

        OPEN dbContacts_Cur;    
          i := 1;    
        LOOP        
        
         FETCH dbContacts_Cur
          INTO  
            P_Tab_Data(i).CONTACTID,              
            P_Tab_Data(i).TAXID,                  
            P_Tab_Data(i).INACTIVEFLAG,
            P_Tab_Data(i).PENDINGFLAG,            
            P_Tab_Data(i).COMPANYNAME,              
            P_Tab_Data(i).EMAILADDRESS,          
            P_Tab_Data(i).WEBPAGE,          
            P_Tab_Data(i).DENOMPREFID,            
            P_Tab_Data(i).INTERESTTYPEPREF,              
            P_Tab_Data(i).CITIZEN,
            P_Tab_Data(i).ISSUEPREFID,
            P_Tab_Data(i).LASTINQUIRY,            
            P_Tab_Data(i).DATELASTINQ,            
--            P_Tab_Data(i).PRIMARYREPID,          
            P_Tab_Data(i).AVAILTIMESTART,        
            P_Tab_Data(i).AVAILTIMEEND,
            P_Tab_Data(i).PERMGRANTED,
            P_Tab_Data(i).DONTCALL,
            P_Tab_Data(i).COMMENTFIELD,
            P_Tab_Data(i).P_CONTACTID,
            P_Tab_Data(i).P_CONTACTTYPE,
            P_Tab_Data(i).P_TAXID,
            P_Tab_Data(i).P_PREFIX,
            P_Tab_Data(i).P_FIRSTNAME,
            P_Tab_Data(i).P_MIDDLENAME,
            P_Tab_Data(i).P_LASTNAME,
            P_Tab_Data(i).P_SUFFIX,
            P_Tab_Data(i).P_ADDRESS1,            
            P_Tab_Data(i).P_ADDRESS2,            
            P_Tab_Data(i).P_CITY,                
            P_Tab_Data(i).P_STATE,              
            P_Tab_Data(i).P_ZIPCODE,            
            P_Tab_Data(i).P_WORKPHONE,          
            P_Tab_Data(i).P_HOMEPHONE,          
            P_Tab_Data(i).P_FAXNUMBER,          
            P_Tab_Data(i).P_BIRTHDATE,          
            P_Tab_Data(i).P_MARITALSTATUS,
            P_Tab_Data(i).P_DRIVERLICENSENO,            
            P_Tab_Data(i).P_DRIVERSTATE,            
            P_Tab_Data(i).P_DENOMID,
            P_Tab_Data(i).S_CONTACTID,                
            P_Tab_Data(i).S_CONTACTTYPE,            
            P_Tab_Data(i).S_TAXID,              
            P_Tab_Data(i).S_PREFIX,              
            P_Tab_Data(i).S_FIRSTNAME,          
            P_Tab_Data(i).S_MIDDLENAME,          
            P_Tab_Data(i).S_LASTNAME,
            P_Tab_Data(i).S_SUFFIX,            
            P_Tab_Data(i).S_ADDRESS1,            
            P_Tab_Data(i).S_ADDRESS2,            
            P_Tab_Data(i).S_CITY,                
            P_Tab_Data(i).S_STATE,              
            P_Tab_Data(i).S_ZIPCODE,            
            P_Tab_Data(i).S_WORKPHONE,          
            P_Tab_Data(i).S_HOMEPHONE,          
            P_Tab_Data(i).S_FAXNUMBER,          
            P_Tab_Data(i).S_BIRTHDATE,          
            P_Tab_Data(i).S_MARITALSTATUS,
            P_Tab_Data(i).S_DRIVERLICENSENO,            
            P_Tab_Data(i).S_DRIVERSTATE,            
            P_Tab_Data(i).S_DENOMID,      
            P_Tab_Data(i).T_CONTACTID,                
            P_Tab_Data(i).T_CONTACTTYPE,            
            P_Tab_Data(i).T_TAXID,              
            P_Tab_Data(i).T_PREFIX,              
            P_Tab_Data(i).T_FIRSTNAME,          
            P_Tab_Data(i).T_MIDDLENAME,          
            P_Tab_Data(i).T_LASTNAME,
            P_Tab_Data(i).T_SUFFIX,            
            P_Tab_Data(i).T_ADDRESS1,            
            P_Tab_Data(i).T_ADDRESS2,            
            P_Tab_Data(i).T_CITY,                
            P_Tab_Data(i).T_STATE,              
            P_Tab_Data(i).T_ZIPCODE,            
            P_Tab_Data(i).T_WORKPHONE,          
            P_Tab_Data(i).T_HOMEPHONE,          
            P_Tab_Data(i).T_FAXNUMBER,          
            P_Tab_Data(i).T_BIRTHDATE,          
            P_Tab_Data(i).T_MARITALSTATUS,
            P_Tab_Data(i).T_DRIVERLICENSENO,            
            P_Tab_Data(i).T_DRIVERSTATE,            
            P_Tab_Data(i).T_DENOMID;    

         EXIT WHEN dbContacts_Cur%notfound;        
                i := i + 1;    
         END LOOP;

    CLOSE dbContacts_Cur;

  END dbContacts_Query;

----------------------------- dbCONTACTS_INSERT_TAB --------------------------------
 
 PROCEDURE dbContacts_Insert_Tab(P_Tab_Data IN Contacts_tab)
 IS
   cnt NUMBER;
  BEGIN    
   cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
          INSERT INTO dbcontacts
                   (CONTACTID,                       
            TAXID,                 
            COMPANYNAME,          
            EMAILADDRESS,            
            WEBPAGE,                
            DENOMPREFID,            
            INTERESTTYPEPREF,      
            CITIZEN,                
            ISSUEPREFID,            
            LASTINQUIRY,            
            DATELASTINQ,            
            PRIMARYREPID,          
            COMMENTFIELD,          
            AVAILTIMESTART,        
            AVAILTIMEEND)
        values
            (P_Tab_Data(i).ContactID,
            P_Tab_Data(i).Taxid,
            P_Tab_Data(i).CompanyName,
            P_Tab_Data(i).EmailAddress,
            P_Tab_Data(i).WebPage,
            P_Tab_Data(i).DenomPrefID,
            P_Tab_Data(i).InteresttypePref,
            P_Tab_Data(i).Citizen,
            P_Tab_Data(i).IssuePrefID,
            P_Tab_Data(i).LastInquiry,
            P_Tab_Data(i).DateLastInq,
            P_Tab_Data(i).PrimaryRepID,
            P_Tab_Data(i).CommentField,
            P_Tab_Data(i).AvailTimeStart,
              P_Tab_Data(i).AvailTimeEnd)
        END LOOP;
            
   cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
          INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES                                                             
            (P_Tab_Data(i).P_CONTACTID,
            P_Tab_Data(i).P_CONTACTTYPE,
            P_Tab_Data(i).P_TAXID,
            P_Tab_Data(i).P_PREFIX,
            P_Tab_Data(i).P_FIRSTNAME,
            P_Tab_Data(i).P_MIDDLENAME,
            P_Tab_Data(i).P_LASTNAME,
            P_Tab_Data(i).P_SUFFIX,
            P_Tab_Data(i).P_ADDRESS1,            
            P_Tab_Data(i).P_ADDRESS2,            
            P_Tab_Data(i).P_CITY,                
            P_Tab_Data(i).P_STATE,              
            P_Tab_Data(i).P_ZIPCODE,            
            P_Tab_Data(i).P_WORKPHONE,          
            P_Tab_Data(i).P_HOMEPHONE,          
            P_Tab_Data(i).P_FAXNUMBER,          
            P_Tab_Data(i).P_BIRTHDATE,          
            P_Tab_Data(i).P_MARITALSTATUS,
            P_Tab_Data(i).P_DRIVERLICENSENO,            
            P_Tab_Data(i).P_DRIVERSTATE,            
            P_Tab_Data(i).P_DENOMID)
       END LOOP;
            
   cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
          INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES
            (P_Tab_Data(i).S_CONTACTID,                
            P_Tab_Data(i).S_CONTACTTYPE,            
            P_Tab_Data(i).S_TAXID,              
            P_Tab_Data(i).S_PREFIX,              
            P_Tab_Data(i).S_FIRSTNAME,          
            P_Tab_Data(i).S_MIDDLENAME,          
            P_Tab_Data(i).S_LASTNAME,
            P_Tab_Data(i).S_SUFFIX,            
            P_Tab_Data(i).S_ADDRESS1,            
            P_Tab_Data(i).S_ADDRESS2,            
            P_Tab_Data(i).S_CITY,                
            P_Tab_Data(i).S_STATE,              
            P_Tab_Data(i).S_ZIPCODE,            
            P_Tab_Data(i).S_WORKPHONE,          
            P_Tab_Data(i).S_HOMEPHONE,          
            P_Tab_Data(i).S_FAXNUMBER,          
            P_Tab_Data(i).S_BIRTHDATE,          
            P_Tab_Data(i).S_MARITALSTATUS,
            P_Tab_Data(i).S_DRIVERLICENSENO,            
            P_Tab_Data(i).S_DRIVERSTATE,            
            P_Tab_Data(i).S_DENOMID)
      END LOOP;
            
   cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
          INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES
                (P_Tab_Data(i).T_CONTACTID,                
            P_Tab_Data(i).T_CONTACTTYPE,            
            P_Tab_Data(i).T_TAXID,              
            P_Tab_Data(i).T_PREFIX,              
            P_Tab_Data(i).T_FIRSTNAME,          
            P_Tab_Data(i).T_MIDDLENAME,          
            P_Tab_Data(i).T_LASTNAME,
            P_Tab_Data(i).T_SUFFIX,            
            P_Tab_Data(i).T_ADDRESS1,            
            P_Tab_Data(i).T_ADDRESS2,            
            P_Tab_Data(i).T_CITY,                
            P_Tab_Data(i).T_STATE,              
            P_Tab_Data(i).T_ZIPCODE,            
            P_Tab_Data(i).T_WORKPHONE,          
            P_Tab_Data(i).T_HOMEPHONE,          
            P_Tab_Data(i).T_FAXNUMBER,          
            P_Tab_Data(i).T_BIRTHDATE,          
            P_Tab_Data(i).T_MARITALSTATUS,
            P_Tab_Data(i).T_DRIVERLICENSENO,            
            P_Tab_Data(i).T_DRIVERSTATE,            
            P_Tab_Data(i).T_DENOMID)
        END LOOP;

   END dbContacts_Insert_Tab;

---------------------------dbCONTACTS_UPDATE_TAB ------------------------------------

   PROCEDURE dbContacts_Update_Tab(P_Tab_Data IN Contacts_tab) IS
      i NUMBER;
      cnt NUMBER;
   BEGIN
      cnt := P_Tab_Data.count;
      FOR i IN 1..cnt LOOP
          UPDATE dbContacts
        SET
            CONTACTID             =  P_Tab_Data(i).ContactID,          
            TAXID               =  P_Tab_Data(i).Taxid,
            COMPANYNAME           =       P_Tab_Data(i).CompanyName,
            EMAILADDRESS          =  P_Tab_Data(i).EmailAddress,
            WEBPAGE               =  P_Tab_Data(i).WebPage,
            DENOMPREFID           =  P_Tab_Data(i).DenomPrefID,
            INTERESTTYPEPREF      =  P_Tab_Data(i).InteresttypePref,
            CITIZEN               =       P_Tab_Data(i).Citizen,
            ISSUEPREFID           =  P_Tab_Data(i).IssuePrefID,
            LASTINQUIRY           =  P_Tab_Data(i).LastInquiry,
            DATELASTINQ           =  P_Tab_Data(i).DateLastInq,
            PRIMARYREPID          =  P_Tab_Data(i).PrimaryRepID,
            COMMENTFIELD          =  P_Tab_Data(i).CommentField,
            AVAILTIMESTART        =  P_Tab_Data(i).AvailTimeStart,
            AVAILTIMEEND          =  P_Tab_Data(i).AvailTimeEnd
        WHERE C.ContactID  =  P_Tab_Data(i).ContactID;
        END LOOP;

      cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
            UPDATE dbContactperson
          SET
            CONTACTID            = P_Tab_Data(i).P_CONTACTID,
             CONTACTTYPE            = P_Tab_Data(i).P_CONTACTTYPE,
            TAXID                  = P_Tab_Data(i).P_TAXID,
            PREFIX                  = P_Tab_Data(i).P_PREFIX,                                            
             FIRSTNAME               = P_Tab_Data(i).P_FIRSTNAME,                  
            MIDDLENAME            = P_Tab_Data(i).P_MIDDLENAME,                                      
            LASTNAME                = P_Tab_Data(i).P_LASTNAME,                  
            SUFFIX                  = P_Tab_Data(i).P_SUFFIX,                          
            ADDRESS1                = P_Tab_Data(i).P_ADDRESS1,                  
            ADDRESS2                = P_Tab_Data(i).P_ADDRESS2,                          
            CITY                    = P_Tab_Data(i).P_CITY,                
            STATE                   = P_Tab_Data(i).P_STATE,                  
            ZIPCODE                 = P_Tab_Data(i).P_ZIPCODE,                
            WORKPHONE               = P_Tab_Data(i).P_WORKPHONE,                          
            HOMEPHONE               = P_Tab_Data(i).P_HOMEPHONE,                          
            FAXNUMBER               = P_Tab_Data(i).P_FAXNUMBER,                          
            BIRTHDATE               = P_Tab_Data(i).P_BIRTHDATE,                          
            MARITALSTATUS           = P_Tab_Data(i).P_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Tab_Data(i).P_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Tab_Data(i).P_DRIVERSTATE,                          
             DENOMID                  = P_Tab_Data(i).P_DENOMID
        WHERE P.ContactID  =  P_Tab_Data(i).ContactID;
      END LOOP;

        cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
            UPDATE dbContactperson
          SET
            CONTACTID            = P_Tab_Data(i).S_CONTACTID,
             CONTACTTYPE            = P_Tab_Data(i).S_CONTACTTYPE,
            TAXID                  = P_Tab_Data(i).S_TAXID,
            PREFIX                  = P_Tab_Data(i).S_PREFIX,                                            
             FIRSTNAME               = P_Tab_Data(i).S_FIRSTNAME,                  
            MIDDLENAME            = P_Tab_Data(i).S_MIDDLENAME,                                      
            LASTNAME                = P_Tab_Data(i).S_LASTNAME,                  
            SUFFIX                  = P_Tab_Data(i).S_SUFFIX,                          
            ADDRESS1                = P_Tab_Data(i).S_ADDRESS1,                  
            ADDRESS2                = P_Tab_Data(i).S_ADDRESS2,                          
            CITY                    = P_Tab_Data(i).S_CITY,                
            STATE                   = P_Tab_Data(i).S_STATE,                  
            ZIPCODE                 = P_Tab_Data(i).S_ZIPCODE,                
            WORKPHONE               = P_Tab_Data(i).S_WORKPHONE,                          
            HOMEPHONE               = P_Tab_Data(i).S_HOMEPHONE,                          
            FAXNUMBER               = P_Tab_Data(i).S_FAXNUMBER,                          
            BIRTHDATE               = P_Tab_Data(i).S_BIRTHDATE,                          
            MARITALSTATUS           = P_Tab_Data(i).S_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Tab_Data(i).S_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Tab_Data(i).S_DRIVERSTATE,                          
             DENOMID                  = P_Tab_Data(i).S_DENOMID
        WHERE S.ContactID  =  P_Tab_Data(i).ContactID;
      END LOOP;

      cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
            UPDATE dbContactperson
          SET
            CONTACTID            = P_Tab_Data(i).T_CONTACTID,
             CONTACTTYPE            = P_Tab_Data(i).T_CONTACTTYPE,
            TAXID                  = P_Tab_Data(i).T_TAXID,
            PREFIX                  = P_Tab_Data(i).T_PREFIX,                                            
             FIRSTNAME               = P_Tab_Data(i).T_FIRSTNAME,                  
            MIDDLENAME            = P_Tab_Data(i).T_MIDDLENAME,                                      
            LASTNAME                = P_Tab_Data(i).T_LASTNAME,                  
            SUFFIX                  = P_Tab_Data(i).T_SUFFIX,                          
            ADDRESS1                = P_Tab_Data(i).T_ADDRESS1,                  
            ADDRESS2                = P_Tab_Data(i).T_ADDRESS2,                          
            CITY                    = P_Tab_Data(i).T_CITY,                
            STATE                   = P_Tab_Data(i).T_STATE,                  
            ZIPCODE                 = P_Tab_Data(i).T_ZIPCODE,                
            WORKPHONE               = P_Tab_Data(i).T_WORKPHONE,                          
            HOMEPHONE               = P_Tab_Data(i).T_HOMEPHONE,                          
            FAXNUMBER               = P_Tab_Data(i).T_FAXNUMBER,                          
            BIRTHDATE               = P_Tab_Data(i).T_BIRTHDATE,                          
            MARITALSTATUS           = P_Tab_Data(i).T_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Tab_Data(i).T_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Tab_Data(i).T_DRIVERSTATE,                          
             DENOMID                  = P_Tab_Data(i).T_DENOMID
        WHERE T.ContactID  =  P_Tab_Data(i).ContactID;
      END LOOP;            
 
   END dbContacts_Update_Tab;

------------------------------ dbCONTACTS_DELETE_TAB -------------------------------



  PROCEDURE dbContacts_Delete_Tab(P_Tab_data IN ContactsID_Tab) IS
      cnt NUMBER;

    BEGIN
      cnt := P_Tab_Data.count;

      FOR i IN 1..cnt LOOP
        DELETE FROM dbContacts
          WHERE C.ContactID = P_Tab_Data(i).ContactID;
        END LOOP;

    END dbContacts_Delete_Tab;

----------------------------- dbCONTACTS_LOC_TAB ------------------------------------

  PROCEDURE dbContacts_Lock_Tab(P_Tab_Data IN ContactsID_tab) IS
      i NUMBER;
      cnt NUMBER;
      block_rec Contacts_Rec;
    BEGIN
      cnt := P_Tab_Data.count;
      FOR i IN 1..cnt LOOP
        Select C.CONTACTID,       
      C.INACTIVEFLAG,
      C.TAXID,
      C.COMPANYNAME,
      C.EMAILADDRESS,
      C.WEBPAGE,
      C.DENOMPREFID,
      C.INTERESTTYPEPREF,
      C.CITIZEN,
      C.ISSUEPREFID,
      C.LASTINQUIRY,
      C.DATELASTINQ,
      C.COMMENTFIELD,
      C.AVAILTIMESTART,
      C.AVAILTIMEEND,
      C.PERMGRANTED,
      C.DONTCALL,
      C.PENDINGFLAG,
      P.CONTACTID        "PCONTACTID",
      P.CONTACTTYPE        "PCONTACTTYPE",
      P.TAXID        "PTAXID",
      P.PREFIX        "PPREFIX",
      P.FIRSTNAME        "PFIRSTNAME",
      P.MIDDLENAME        "PMIDDLENAME",
      P.LASTNAME        "PLASTNAME",
      P.SUFFIX        "PSUFFIX",
      P.ADDRESS1        "PADDRESS1",
      P.ADDRESS2        "PADDRESS2",
      P.CITY                "PCITY",
      P.STATE        "PSTATE",
      P.ZIPCODE        "PZIPCODE",
      P.WORKPHONE        "PWORKPHONE",
      P.HOMEPHONE        "PHOMEPHONE",
      P.FAXNUMBER        "PFAXNUMBER",
      P.BIRTHDATE        "PBIRTHDATE",
      P.MARITALSTATUS        "PMARITALSTATUS",
      P.DRIVERLICENSENO        "PDRIVERLICENSENO",
      P.DRIVERSTATE        "PDRIVERSTATE",
      P.DENOMID        "PDENOMID",
      S.CONTACTID        "SCONTACTID",
      S.CONTACTTYPE        "SCONTACTTYPE",
      S.TAXID        "STAXID",
      S.PREFIX        "SPREFIX",
      S.FIRSTNAME        "SFIRSTNAME",
      S.MIDDLENAME        "SMIDDLENAME",
      S.LASTNAME        "SLASTNAME",
      S.SUFFIX        "SSUFFIX",
      S.ADDRESS1        "SADDRESS1",
      S.ADDRESS2        "SADDRESS2",
      S.CITY                "SCITY",
      S.STATE        "SSTATE",
      S.ZIPCODE        "SZIPCODE",
      S.WORKPHONE        "SWORKPHONE",
      S.HOMEPHONE        "SHOMEPHONE",
      S.FAXNUMBER        "SFAXNUMBER",
      S.BIRTHDATE        "SBIRTHDATE",
      S.MARITALSTATUS        "SMARITALSTATUS",
      S.DRIVERLICENSENO        "SDRIVERLICENSENO",
      S.DRIVERSTATE        "SDRIVERSTATE",
      S.DENOMID        "SDENOMID",
      T.CONTACTID        "TCONTACTID",
      T.CONTACTTYPE        "TCONTACTTYPE",
      T.TAXID        "TTAXID",
      T.PREFIX        "TPREFIX",
      T.FIRSTNAME        "TFIRSTNAME",
      T.MIDDLENAME        "TMIDDLENAME",
      T.LASTNAME        "TLASTNAME",
      T.SUFFIX        "TSUFFIX",
      T.ADDRESS1        "TADDRESS1",
      T.ADDRESS2        "TADDRESS2",
      T.CITY                "TCITY",
      T.STATE        "TSTATE",
      T.ZIPCODE        "TZIPCODE",
      T.WORKPHONE        "TWORKPHONE",
      T.HOMEPHONE        "THOMEPHONE",
      T.FAXNUMBER        "TFAXNUMBER",
      T.BIRTHDATE        "TBIRTHDATE",
      T.MARITALSTATUS        "TMARITALSTATUS",
      T.DRIVERLICENSENO        "TDRIVERLICENSENO",
      T.DRIVERSTATE        "TDRIVERSTATE",
      T.DENOMID        "TDENOMID"
     INTO block_rec
     FROM
      GWTSDEV.dbContacts C,
      GWTSDEV.dbContactPerson P,
      GWTSDEV.dbContactPerson S,
      GWTSDEV.dbContactPerson T
     WHERE C.ContactID = P_TAB_Data(i).ContactID
      OR P.ContactID = P_TAB_Data(i).P_ContactID
      OR S.ContactID = P_TAB_Data(i).S_ContactID
      OR T.ContactID = P_TAB_Data(i).T_ContactID
        FOR UPDATE NOWAIT;

      END LOOP;

  END dbContacts_Lock_Tab;

--------------------------   COUNT FUNCTION   -------------------------------------

     FUNCTION Count_Query_Func RETURN NUMBER IS
          r NUMBER;  
      BEGIN
            SELECT count(*)
            INTO r
            FROM dbcontacts;
            
            RETURN r;
      END Count_Query_Func;  


/**********************  DML and Locking Procedures  ********************************
-----------------------    based on Doc ID 66887.1
-----------------------   Using Record data types   ---------------------------------


PROCEDURE dbContacts_Insert(P_Record_Data IN contacts_rec) IS  
   BEGIN
      INSERT INTO dbcontacts
                   (CONTACTID,                       
            TAXID,                 
            COMPANYNAME,          
            EMAILADDRESS,            
            WEBPAGE,                
            DENOMPREFID,            
            INTERESTTYPEPREF,      
            CITIZEN,                
            ISSUEPREFID,            
            LASTINQUIRY,            
            DATELASTINQ,            
            PRIMARYREPID,          
            COMMENTFIELD,          
            AVAILTIMESTART,        
            AVAILTIMEEND)
        values
            (P_Record_Data.ContactID,
            P_Record_Data.Taxid,
            P_Record_Data.CompanyName,
            P_Record_Data.EmailAddress,
            P_Record_Data.WebPage,
            P_Record_Data.DenomPrefID,
            P_Record_Data.InteresttypePref,
            P_Record_Data.Citizen,
            P_Record_Data.IssuePrefID,
            P_Record_Data.LastInquiry,
            P_Record_Data.DateLastInq,
            P_Record_Data.PrimaryRepID,
            P_Record_Data.CommentField,
            P_Record_Data.AvailTimeStart,
              P_Record_Data.AvailTimeEnd);

      INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES                                                             
            (P_Record_Data.P_CONTACTID,
            P_Record_Data.P_CONTACTTYPE,
            P_Record_Data.P_TAXID,
            P_Record_Data.P_PREFIX,
            P_Record_Data.P_FIRSTNAME,
            P_Record_Data.P_MIDDLENAME,
            P_Record_Data.P_LASTNAME,
            P_Record_Data.P_SUFFIX,
            P_Record_Data.P_ADDRESS1,            
            P_Record_Data.P_ADDRESS2,            
            P_Record_Data.P_CITY,                
            P_Record_Data.P_STATE,              
            P_Record_Data.P_ZIPCODE,            
            P_Record_Data.P_WORKPHONE,          
            P_Record_Data.P_HOMEPHONE,          
            P_Record_Data.P_FAXNUMBER,          
            P_Record_Data.P_BIRTHDATE,          
            P_Record_Data.P_MARITALSTATUS,
            P_Record_Data.P_DRIVERLICENSENO,            
            P_Record_Data.P_DRIVERSTATE,            
            P_Record_Data.P_DENOMID);

      INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES
            (P_Record_Data.S_CONTACTID,                
            P_Record_Data.S_CONTACTTYPE,            
            P_Record_Data.S_TAXID,              
            P_Record_Data.S_PREFIX,              
            P_Record_Data.S_FIRSTNAME,          
            P_Record_Data.S_MIDDLENAME,          
            P_Record_Data.S_LASTNAME,
            P_Record_Data.S_SUFFIX,            
            P_Record_Data.S_ADDRESS1,            
            P_Record_Data.S_ADDRESS2,            
            P_Record_Data.S_CITY,                
            P_Record_Data.S_STATE,              
            P_Record_Data.S_ZIPCODE,            
            P_Record_Data.S_WORKPHONE,          
            P_Record_Data.S_HOMEPHONE,          
            P_Record_Data.S_FAXNUMBER,          
            P_Record_Data.S_BIRTHDATE,          
            P_Record_Data.S_MARITALSTATUS,
            P_Record_Data.S_DRIVERLICENSENO,            
            P_Record_Data.S_DRIVERSTATE,            
            P_Record_Data.S_DENOMID);
 
      INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES
                (P_Record_Data.T_CONTACTID,                
            P_Record_Data.T_CONTACTTYPE,            
            P_Record_Data.T_TAXID,              
            P_Record_Data.T_PREFIX,              
            P_Record_Data.T_FIRSTNAME,          
            P_Record_Data.T_MIDDLENAME,          
            P_Record_Data.T_LASTNAME,
            P_Record_Data.T_SUFFIX,            
            P_Record_Data.T_ADDRESS1,            
            P_Record_Data.T_ADDRESS2,            
            P_Record_Data.T_CITY,                
            P_Record_Data.T_STATE,              
            P_Record_Data.T_ZIPCODE,            
            P_Record_Data.T_WORKPHONE,          
            P_Record_Data.T_HOMEPHONE,          
            P_Record_Data.T_FAXNUMBER,          
            P_Record_Data.T_BIRTHDATE,          
            P_Record_Data.T_MARITALSTATUS,
            P_Record_Data.T_DRIVERLICENSENO,            
            P_Record_Data.T_DRIVERSTATE,            
            P_Record_Data.T_DENOMID);

            COMMIT;  

  END dbContacts_Insert;    
 
 -------------------------  dbCONTACTS UPDATE  ------------------------------------
   
   PROCEDURE dbContacts_Update(P_Record_Data IN contacts_rec) IS  
    BEGIN
      UPDATE dbContacts
        SET
            CONTACTID             =  P_Record_Data.ContactID,          
            TAXID               =  P_Record_Data.Taxid,
            COMPANYNAME           =       P_Record_Data.CompanyName,
            EMAILADDRESS          =  P_Record_Data.EmailAddress,
            WEBPAGE               =  P_Record_Data.WebPage,
            DENOMPREFID           =  P_Record_Data.DenomPrefID,
            INTERESTTYPEPREF      =  P_Record_Data.InteresttypePref,
            CITIZEN               =       P_Record_Data.Citizen,
            ISSUEPREFID           =  P_Record_Data.IssuePrefID,
            LASTINQUIRY           =  P_Record_Data.LastInquiry,
            DATELASTINQ           =  P_Record_Data.DateLastInq,
            PRIMARYREPID          =  P_Record_Data.PrimaryRepID,
            COMMENTFIELD          =  P_Record_Data.CommentField,
            AVAILTIMESTART        =  P_Record_Data.AvailTimeStart,
            AVAILTIMEEND          =  P_Record_Data.AvailTimeEnd
        WHERE C.ContactID  =  P_Record_Data.ContactID;
       
      UPDATE dbContactperson
          SET
            CONTACTID            = P_Record_Data.P_CONTACTID,
             CONTACTTYPE            = P_Record_Data.P_CONTACTTYPE,
            TAXID                  = P_Record_Data.P_TAXID,
            PREFIX                  = P_Record_Data.P_PREFIX,                                            
             FIRSTNAME               = P_Record_Data.P_FIRSTNAME,                  
            MIDDLENAME            = P_Record_Data.P_MIDDLENAME,                                      
            LASTNAME                = P_Record_Data.P_LASTNAME,                  
            SUFFIX                  = P_Record_Data.P_SUFFIX,                          
            ADDRESS1                = P_Record_Data.P_ADDRESS1,                  
            ADDRESS2                = P_Record_Data.P_ADDRESS2,                          
            CITY                    = P_Record_Data.P_CITY,                
            STATE                   = P_Record_Data.P_STATE,                  
            ZIPCODE                 = P_Record_Data.P_ZIPCODE,                
            WORKPHONE               = P_Record_Data.P_WORKPHONE,                          
            HOMEPHONE               = P_Record_Data.P_HOMEPHONE,                          
            FAXNUMBER               = P_Record_Data.P_FAXNUMBER,                          
            BIRTHDATE               = P_Record_Data.P_BIRTHDATE,                          
            MARITALSTATUS           = P_Record_Data.P_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Record_Data.P_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Record_Data.P_DRIVERSTATE,                          
             DENOMID                  = P_Record_Data.P_DENOMID
        WHERE P.ContactID  =  P_Record_Data.ContactID;
      
        UPDATE dbContactperson
          SET
            CONTACTID            = P_Record_Data.S_CONTACTID,
             CONTACTTYPE            = P_Record_Data.S_CONTACTTYPE,
            TAXID                  = P_Record_Data.S_TAXID,
            PREFIX                  = P_Record_Data.S_PREFIX,                                            
             FIRSTNAME               = P_Record_Data.S_FIRSTNAME,                  
            MIDDLENAME            = P_Record_Data.S_MIDDLENAME,                                      
            LASTNAME                = P_Record_Data.S_LASTNAME,                  
            SUFFIX                  = P_Record_Data.S_SUFFIX,                          
            ADDRESS1                = P_Record_Data.S_ADDRESS1,                  
            ADDRESS2                = P_Record_Data.S_ADDRESS2,                          
            CITY                    = P_Record_Data.S_CITY,                
            STATE                   = P_Record_Data.S_STATE,                  
            ZIPCODE                 = P_Record_Data.S_ZIPCODE,                
            WORKPHONE               = P_Record_Data.S_WORKPHONE,                          
            HOMEPHONE               = P_Record_Data.S_HOMEPHONE,                          
            FAXNUMBER               = P_Record_Data.S_FAXNUMBER,                          
            BIRTHDATE               = P_Record_Data.S_BIRTHDATE,                          
            MARITALSTATUS           = P_Record_Data.S_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Record_Data.S_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Record_Data.S_DRIVERSTATE,                          
             DENOMID                  = P_Record_Data.S_DENOMID
        WHERE S.ContactID  =  P_Record_Data.ContactID;
             
          UPDATE dbContactperson
          SET
            CONTACTID            = P_Record_Data.T_CONTACTID,
             CONTACTTYPE            = P_Record_Data.T_CONTACTTYPE,
            TAXID                  = P_Record_Data.T_TAXID,
            PREFIX                  = P_Record_Data.T_PREFIX,                                            
             FIRSTNAME               = P_Record_Data.T_FIRSTNAME,                  
            MIDDLENAME            = P_Record_Data.T_MIDDLENAME,                                      
            LASTNAME                = P_Record_Data.T_LASTNAME,                  
            SUFFIX                  = P_Record_Data.T_SUFFIX,                          
            ADDRESS1                = P_Record_Data.T_ADDRESS1,                  
            ADDRESS2                = P_Record_Data.T_ADDRESS2,                          
            CITY                    = P_Record_Data.T_CITY,                
            STATE                   = P_Record_Data.T_STATE,                  
            ZIPCODE                 = P_Record_Data.T_ZIPCODE,                
            WORKPHONE               = P_Record_Data.T_WORKPHONE,                          
            HOMEPHONE               = P_Record_Data.T_HOMEPHONE,                          
            FAXNUMBER               = P_Record_Data.T_FAXNUMBER,                          
            BIRTHDATE               = P_Record_Data.T_BIRTHDATE,                          
            MARITALSTATUS           = P_Record_Data.T_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Record_Data.T_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Record_Data.T_DRIVERSTATE,                          
             DENOMID                  = P_Record_Data.T_DENOMID
        WHERE T.ContactID  =  P_Record_Data.ContactID;
          
    END dbContacts_Update;    

---------------------------  dbCONTACTS_DELETE  -----------------------------------

   
    PROCEDURE dbContacts_Delete(P_Record_Data IN contacts_rec) IS
     BEGIN
            DELETE
            FROM dbContacts
            WHERE ContactID = P_Record_Data.ContactID;  
     END dbContacts_Delete;

   

---------------------------  dbCONTACTS_LOCK   ------------------------------------
 
  PROCEDURE dbContacts_lock(P_ContactID IN dbContacts.contactid%TYPE) IS
       v_rownum NUMBER;  
   BEGIN
          SELECT dbcontactPERSON.contactid
            INTO v_rownum
            FROM dbcontactPERSON      
            WHERE P.contactid = P_ContactID        
            FOR UPDATE;  
   END dbContacts_lock;


--------------------------   COUNT FUNCTION   -------------------------------------

     FUNCTION Count_Query_Func RETURN NUMBER IS
          r NUMBER;  
      BEGIN
            SELECT count(*)
            INTO r
            FROM dbcontacts;
            
            RETURN r;
      END Count_Query_Func;    


**********************************************************************************/

END CALBAPTIST_DATASOURCE;
/
Comment
Watch Question

Commented:
Please provide more information on the specific problem.  What does not work?

Author

Commented:
When that pkg is ran I receive and error stating Package compiled with errors.  When I open the form I receive the following errors

FRM- 40735 When-new-form instance trigger raised unhandled exception ora-01403 (this is on the insert) and FRM-40505 Oracle error unable to perform query.

uTab

Commented:
When the package is "compile with errors" it is not in a usable state.   Let's first fix the problem with package and then deal with forms.

So, where/what is the compilation error in the package?

Author

Commented:
When I run the pkg in sql I only receive the Warring pkg compiled with errors. Any ideas how to get the actual error codes?

tab

Commented:
In SQLPLUS, afte you run the package scripts, type the command 'show errors'.  This will list all the errors.

sqlplus>show errors

Author

Commented:
Here is what I got

LINE/COL ERROR
-------- --------------------------------------------------------
237/5    PL/SQL: SQL Statement ignored
302/17   PLS-00302: component 'T_TAXID' must be declared
337/11   PL/SQL: SQL Statement ignored
349/3    PL/SQL: ORA-00904: "PRIMARYREPID": invalid identifier
365/3    PLS-00382: expression is of wrong type
365/17   PLS-00302: component 'PRIMARYREPID' must be declared
469/11   PL/SQL: SQL Statement ignored
494/3    PLS-00382: expression is of wrong type
494/3    PL/SQL: ORA-22806: not an object or REF
494/17   PLS-00302: component 'T_TAXID' must be declared
525/6    PL/SQL: SQL Statement ignored

LINE/COL ERROR
-------- --------------------------------------------------------
538/28   PLS-00382: expression is of wrong type
538/42   PLS-00302: component 'PRIMARYREPID' must be declared
542/10   PL/SQL: ORA-00904: "C"."CONTACTID": invalid identifier
547/8    PL/SQL: SQL Statement ignored
570/10   PL/SQL: ORA-00904: "P"."CONTACTID": invalid identifier
575/8    PL/SQL: SQL Statement ignored
598/10   PL/SQL: ORA-00904: "S"."CONTACTID": invalid identifier
607/13   PLS-00382: expression is of wrong type
607/27   PLS-00302: component 'T_TAXID' must be declared

tab

Commented:
You need to fix these errors.

Author

Commented:
That is what I am trying to do.

Commented:
Did you get these errors fixed?

Can you please post the Package spec?  The spec will contain type declarations that will help to identify some compilation errors.  Most of the errors appears to be fairly simple to correct: incorrect references.

Author

Commented:
I am down to a couple of the same errors. Here is what I have and the spec:

LINE/COL ERROR
-------- ----------------------------------------------------
237/5    PL/SQL: SQL Statement ignored
250/17   PLS-00386: type mismatch found at 'P_TAB_DATA.LASTIN
         between FETCH cursor and INTO variables

659/6553 PL/SQL: SQL Statement ignored
0

748/19   PLS-00382: expression is of wrong type
748/33   PLS-00302: component 'P_CONTACTID' must be declared
749/19   PLS-00382: expression is of wrong type
749/33   PLS-00302: component 'S_CONTACTID' must be declared

LINE/COL ERROR
-------- ----------------------------------------------------
750/19   PLS-00382: expression is of wrong type
750/19   PL/SQL: ORA-22806: not an object or REF
750/33   PLS-00302: component 'T_CONTACTID' must be declared

CREATE OR REPLACE PACKAGE CalBaptist_DataSource
 AS

  Type Contacts_rec is record

      (CONTACTID        dbContacts.contactid%type,
      INACTIVEFLAG      dbContacts.Inactiveflag%type,     -- NOT NULL CHAR(1)
      TAXID             dbContacts.TaxID%type,            -- NOT NULL VARCHAR2(11)
      COMPANYNAME       dbContacts.CompanyName%type,      --          VARCHAR2(50)
      EMAILADDRESS      dbContacts.EmailAddress%type,     --          VARCHAR2(50)
      WEBPAGE           dbContacts.WebPage%type,          --          VARCHAR2(50)
      DENOMPREFID       dbContacts.DenomPrefid%type,      --          NUMBER
      INTERESTTYPEPREF  dbContacts.InterestTypePref%type, --          CHAR(1)
      CITIZEN           dbContacts.Citizen%type,          --          CHAR(1)
      ISSUEPREFID       dbContacts.IssuePrefID%type,      --          NUMBER
      LASTINQUIRY       dbContacts.LastInquiry%type,      --          NUMBER
      DATELASTINQ       dbContacts.DateLastInq%type,      --          DATE
      COMMENTFIELD      dbContacts.CommentField%type,     --          VARCHAR2(2000)
      AVAILTIMESTART    dbContacts.AvailTimeStart%type,   --          DATE
      AVAILTIMEEND      dbContacts.AvailTimeEnd%type,     --          DATE
      PERMGRANTED       dbContacts.PermGranted%type,      --          CHAR(1)
      DONTCALL          dbContacts.DontCall%type,          --          CHAR(1)
      PENDINGFLAG       dbContacts.PendingFlag%type,          -- NOT NULL CHAR(1) -- Changes to Contact Info requires Retail Approval            
      P_CONTACTID        dbContactPerson.ContactID%type,   -- NOT NULL NUMBER
      P_CONTACTTYPE     dbContactPerson.ContactType%type, -- NOT NULL CHAR(1)
      P_TAXID              dbContactPerson.TaxID%type,       -- NOT NULL VARCHAR2(11)
      P_PREFIX          dbContactPerson.Prefix%type,          --          VARCHAR2(5)
      P_FIRSTNAME       dbContactPerson.FirstName%type,   -- NOT NULL VARCHAR2(20)
      P_MIDDLENAME      dbContactPerson.MiddleName%type,  --          VARCHAR2(20)
      P_LASTNAME        dbContactPerson.LastName%type,    -- NOT NULL VARCHAR2(20)
      P_SUFFIX          dbContactPerson.Suffix%type,      --          VARCHAR2(20)
      P_ADDRESS1        dbContactPerson.Address1%type,    -- NOT NULL VARCHAR2(50)
      P_ADDRESS2        dbContactPerson.Address2%type,    --          VARCHAR2(50)
      P_CITY            dbContactPerson.City%type,          -- NOT NULL VARCHAR2(30)
      P_STATE           dbContactPerson.State%type,       -- NOT NULL CHAR(2)
      P_ZIPCODE         dbContactPerson.ZipCode%type,     -- NOT NULL VARCHAR2(10)
      P_WORKPHONE       dbContactPerson.WorkPhone%type,   --          VARCHAR2(14)
      P_HOMEPHONE       dbContactPerson.HomePhone%type,   --          VARCHAR2(14)
      P_FAXNUMBER       dbContactPerson.FaxNumber%type,   --          VARCHAR2(14)
      P_BIRTHDATE       dbContactPerson.Birthdate%type,   --          DATE
      P_MARITALSTATUS   dbContactPerson.MaritalStatus%type, --        CHAR(1)
      P_DRIVERLICENSENO dbContactPerson.DriverLicenseNo%type, --      VARCHAR2(20)
      P_DRIVERSTATE     dbContactPerson.DriverState%type, --          CHAR(2)
      P_DENOMID         dbContactPerson.DenomID%type,     --          NUMBER
      S_CONTACTID          dbContactPerson.ContactID%type,   -- NOT NULL NUMBER
      S_CONTACTTYPE     dbContactPerson.ContactType%type, -- NOT NULL CHAR(1)
      S_TAXID           dbContactPerson.TaxID%type,       -- NOT NULL VARCHAR2(11)
      S_PREFIX          dbContactPerson.Prefix%type,          --          VARCHAR2(5)
      S_FIRSTNAME       dbContactPerson.FirstName%type,   -- NOT NULL VARCHAR2(20)
      S_MIDDLENAME      dbContactPerson.MiddleName%type,  --          VARCHAR2(20)
      S_LASTNAME        dbContactPerson.LastName%type,    -- NOT NULL VARCHAR2(20)
      S_SUFFIX          dbContactPerson.Suffix%type,      --          VARCHAR2(20)
      S_ADDRESS1        dbContactPerson.Address1%type,    -- NOT NULL VARCHAR2(50)
      S_ADDRESS2        dbContactPerson.Address2%type,    --          VARCHAR2(50)
      S_CITY            dbContactPerson.City%type,          -- NOT NULL VARCHAR2(30)
      S_STATE           dbContactPerson.State%type,       -- NOT NULL CHAR(2)
      S_ZIPCODE         dbContactPerson.ZipCode%type,     -- NOT NULL VARCHAR2(10)
      S_WORKPHONE       dbContactPerson.WorkPhone%type,   --          VARCHAR2(14)
      S_HOMEPHONE       dbContactPerson.HomePhone%type,   --          VARCHAR2(14)
      S_FAXNUMBER       dbContactPerson.FaxNumber%type,   --          VARCHAR2(14)
      S_BIRTHDATE       dbContactPerson.Birthdate%type,   --          DATE
      S_MARITALSTATUS   dbContactPerson.MaritalStatus%type, --        CHAR(1)
      S_DRIVERLICENSENO dbContactPerson.DriverLicenseNo%type, --      VARCHAR2(20)
      S_DRIVERSTATE     dbContactPerson.DriverState%type, --          CHAR(2)
      S_DENOMID         dbContactPerson.DenomID%type,     --          NUMBER
      T_CONTACTID        dbContactPerson.ContactID%type,   -- NOT NULL NUMBER
      T_CONTACTTYPE     dbContactPerson.ContactType%type, -- NOT NULL CHAR(1)
      T_TAXID              dbContactPerson.TaxID%type,       -- NOT NULL VARCHAR2(11)
      T_PREFIX          dbContactPerson.Prefix%type,          --          VARCHAR2(5)
      T_FIRSTNAME       dbContactPerson.FirstName%type,   -- NOT NULL VARCHAR2(20)
      T_MIDDLENAME      dbContactPerson.MiddleName%type,  --          VARCHAR2(20)
      T_LASTNAME        dbContactPerson.LastName%type,    -- NOT NULL VARCHAR2(20)
      T_SUFFIX          dbContactPerson.Suffix%type,      --          VARCHAR2(20)
      T_ADDRESS1        dbContactPerson.Address1%type,    -- NOT NULL VARCHAR2(50)
      T_ADDRESS2        dbContactPerson.Address2%type,    --          VARCHAR2(50)
      T_CITY            dbContactPerson.City%type,          -- NOT NULL VARCHAR2(30)
      T_STATE           dbContactPerson.State%type,       -- NOT NULL CHAR(2)
      T_ZIPCODE         dbContactPerson.ZipCode%type,     -- NOT NULL VARCHAR2(10)
      T_WORKPHONE       dbContactPerson.WorkPhone%type,   --          VARCHAR2(14)
      T_HOMEPHONE       dbContactPerson.HomePhone%type,   --          VARCHAR2(14)
      T_FAXNUMBER       dbContactPerson.FaxNumber%type,   --          VARCHAR2(14)
      T_BIRTHDATE       dbContactPerson.Birthdate%type,   --          DATE
      T_MARITALSTATUS   dbContactPerson.MaritalStatus%type, --        CHAR(1)
      T_DRIVERLICENSENO dbContactPerson.DriverLicenseNo%type, --      VARCHAR2(20)
      T_DRIVERSTATE     dbContactPerson.DriverState%type, --          CHAR(2)
      T_DENOMID         dbContactPerson.DenomID%type);    --          NUMBER


 
  Type Concats_rec is record
   (CATEGORYID          dbconcats.categoryid%type,
    CONTACTID              dbconcats.contactid%type);

  Type Categs_rec is record
   (CATEGORYID            dbcategs.categoryid%type,
    CATEGORY            dbcategs.category%type,
    CATDESC            dbcategs.catdesc%type,
    CATTYPE            dbcategs.cattype%type,
    USERID            dbcategs.userid%type,
    PRIVATEGRP           dbcategs.privategrp%type);

  Type Contacts_ContactID_Rec is record
   ( ContactID dbContacts.ContactID%type);

  Type Contacts_cur is REF CURSOR RETURN contacts_rec;

  Type Concats_cur is REF CURSOR RETURN concats_rec;

  Type Categs_cur   is REF CURSOR RETURN categs_rec;

  Type Contacts_tab   is table of contacts_rec INDEX BY BINARY_INTEGER;
  Type ContactsID_Tab is table of contacts_ContactID_rec INDEX BY BINARY_INTEGER;

  Type Concats_tab is table of concats_rec INDEX BY BINARY_INTEGER;

  Type Categs_tab   is table of categs_rec   INDEX BY BINARY_INTEGER;

  -- This procedure uses refcursor for query operation, it sends the data
  -- from the stored procedure to the client.

  PROCEDURE CONTACTS_QUERY_REFCUR (P_Block_Data   IN OUT CalBaptist_Datasource.contacts_cur,
                                   P_Prospects    IN     NUMBER,
                                   P_Marketing    IN     NUMBER,
                                   P_Trust        IN     NUMBER,
                                   P_Retail       IN     NUMBER,
                                   P_Origination  IN     NUMBER,
                                   P_Vendor       IN     NUMBER,
                                   P_Church       IN     NUMBER,
                                   P_Pastor       IN     NUMBER,
                                   P_ContactOnly  IN     NUMBER,
                                   P_Employee     IN     NUMBER,
                                   P_CapitalGifts IN     NUMBER,
                                   P_ChurchLoans  IN     NUMBER,
                                   P_GroupFilter  IN     NUMBER);


  -- The following procedures perform DML using PL/SQL table types on data to and from the Contact_Query_RefCur
  -- data block and the dbcontacts table.

  PROCEDURE dbContacts_Insert_Tab(P_Tab_data IN Contacts_tab);
  PROCEDURE dbContacts_Update_Tab(P_Tab_data IN Contacts_tab);
  PROCEDURE dbContacts_Delete_Tab(P_Tab_data IN ContactsID_tab);
  PROCEDURE dbContacts_Lock_Tab  (P_Tab_data IN ContactsID_tab);
  FUNCTION  Count_Query_Func RETURN Number;


/********************************************************************************************
* The following procedures perform DML for record data to and from the Contact_Query_RefCur
* data block and the dbcontacts table. NOT SUPPORTED BY FORMS PLSQL
********************************************************************************************/

--  PROCEDURE dbContacts_Insert(P_Record_Data IN contacts_rec);
--  PROCEDURE dbContacts_Update(P_Record_Data IN contacts_rec);
--  PROCEDURE dbContacts_Delete(P_Record_Data IN contacts_rec);

-- The following procedure is used to lock records and function enables the Query Count
-- Hits from the Forms default menu to work.

--  PROCEDURE dbContacts_lock(P_ContactID IN dbContacts.contactid%TYPE);
--  FUNCTION Count_Query_Func RETURN NUMBER;

End CalBaptist_DataSource;
/

Thank you for your help!

tab

Commented:
Okay I got the first one:

The cursor is fetching COMMENTFIELD into a DATE variable (AVAILTIMESTART).
Note the prior line is commented.  Remove the COMMENTFIELD from the cursor select.

Author

Commented:
Thank you,

I am down to the following errors

LINE/COL ERROR
-------- ----------------------------------------------------
237/5    PL/SQL: SQL Statement ignored
250/17   PLS-00386: type mismatch found at 'P_TAB_DATA.LASTIN
         between FETCH cursor and INTO variables

659/6553 PL/SQL: SQL Statement ignored
0

740/4    PL/SQL: ORA-00904: "T"."DENOMID": invalid identifier

That just leaves the last two, You are earning your 500 pts

tab

Commented:
It is complaining about the LASTINQ because of COMMENTFIELD column in the cursor.  Did you fix that?

Author

Commented:
Wow, I really had some stuff out of place that is why it was complaining about the LASTINQ. Thanks for pointing me in the right direction. Here is what I am down to.

LINE/COL ERROR
-------- -----------------------------------------------------
23/5     PL/SQL: SQL Statement ignored
24/7     PLS-00382: expression is of wrong type
659/6553 PL/SQL: SQL Statement ignored
0

740/4    PL/SQL: ORA-00904: "T"."DENOMID": invalid identifier

tab

Commented:
Please post your new version of the package body.  This may be a new error that got introduced when you tried to fix the original ones.

Author

Commented:
Here it is:

CREATE OR REPLACE PACKAGE BODY CalBaptist_DataSource AS

--------------------------- REF CURSOR to populate form ------------------------------

  PROCEDURE CONTACTS_QUERY_REFCUR (P_Block_Data   IN OUT CALBAPTIST_DATASOURCE.contacts_cur,
                                   P_Prospects    IN     NUMBER,
                                   P_Marketing    IN     NUMBER,
                                   P_Trust        IN     NUMBER,
                                   P_Retail       IN     NUMBER,
                                   P_Origination  IN     NUMBER,
                                   P_Vendor       IN     NUMBER,
                                   P_Church       IN     NUMBER,
                                   P_Pastor       IN     NUMBER,
                                   P_ContactOnly  IN     NUMBER,
                                   P_Employee     IN     NUMBER,
                                   P_CapitalGifts IN     NUMBER,
                                   P_ChurchLoans  IN     NUMBER,
                                   P_GroupFilter  IN     NUMBER)
  IS

  BEGIN

    OPEN P_Block_Data FOR
   
      Select C.CONTACTID,       
      C.INACTIVEFLAG,
      C.TAXID,
      C.COMPANYNAME,
      C.EMAILADDRESS,
      C.WEBPAGE,
      C.DENOMPREFID,
      C.INTERESTTYPEPREF,
      C.CITIZEN,
      C.ISSUEPREFID,
      C.LASTINQUIRY,
      C.DATELASTINQ,
      C.COMMENTFIELD,
      C.AVAILTIMESTART,
      C.AVAILTIMEEND,
      C.PERMGRANTED,
      C.DONTCALL,
      C.PENDINGFLAG,
      P.CONTACTID        "PCONTACTID",
      P.CONTACTTYPE        "PCONTACTTYPE",
      P.TAXID        "PTAXID",
      P.PREFIX        "PPREFIX",
      P.FIRSTNAME        "PFIRSTNAME",
      P.MIDDLENAME        "PMIDDLENAME",
      P.LASTNAME        "PLASTNAME",
      P.SUFFIX        "PSUFFIX",
      P.ADDRESS1        "PADDRESS1",
      P.ADDRESS2        "PADDRESS2",
      P.CITY                "PCITY",
      P.STATE        "PSTATE",
      P.ZIPCODE        "PZIPCODE",
      P.WORKPHONE        "PWORKPHONE",
      P.HOMEPHONE        "PHOMEPHONE",
      P.FAXNUMBER        "PFAXNUMBER",
      P.BIRTHDATE        "PBIRTHDATE",
      P.MARITALSTATUS        "PMARITALSTATUS",
      P.DRIVERLICENSENO        "PDRIVERLICENSENO",
      P.DRIVERSTATE        "PDRIVERSTATE",
      P.DENOMID        "PDENOMID",
      S.CONTACTID        "SCONTACTID",
      S.CONTACTTYPE        "SCONTACTTYPE",
      S.TAXID        "STAXID",
      S.PREFIX        "SPREFIX",
      S.FIRSTNAME        "SFIRSTNAME",
      S.MIDDLENAME        "SMIDDLENAME",
      S.LASTNAME        "SLASTNAME",
      S.SUFFIX        "SSUFFIX",
      S.ADDRESS1        "SADDRESS1",
      S.ADDRESS2        "SADDRESS2",
      S.CITY                "SCITY",
      S.STATE        "SSTATE",
      S.ZIPCODE        "SZIPCODE",
      S.WORKPHONE        "SWORKPHONE",
      S.HOMEPHONE        "SHOMEPHONE",
      S.FAXNUMBER        "SFAXNUMBER",
      S.BIRTHDATE        "SBIRTHDATE",
      S.MARITALSTATUS        "SMARITALSTATUS",
      S.DRIVERLICENSENO        "SDRIVERLICENSENO",
      S.DRIVERSTATE        "SDRIVERSTATE",
      S.DENOMID        "SDENOMID",
      T.CONTACTID        "TCONTACTID",
      T.CONTACTTYPE        "TCONTACTTYPE",
      T.TAXID        "TTAXID",
      T.PREFIX        "TPREFIX",
      T.FIRSTNAME        "TFIRSTNAME",
      T.MIDDLENAME        "TMIDDLENAME",
      T.LASTNAME        "TLASTNAME",
      T.SUFFIX        "TSUFFIX",
      T.ADDRESS1        "TADDRESS1",
      T.ADDRESS2        "TADDRESS2",
      T.CITY                "TCITY",
      T.STATE        "TSTATE",
      T.ZIPCODE        "TZIPCODE",
      T.WORKPHONE        "TWORKPHONE",
      T.HOMEPHONE        "THOMEPHONE",
      T.FAXNUMBER        "TFAXNUMBER",
      T.BIRTHDATE        "TBIRTHDATE",
      T.MARITALSTATUS        "TMARITALSTATUS",
      T.DRIVERLICENSENO        "TDRIVERLICENSENO",
      T.DRIVERSTATE        "TDRIVERSTATE",
      T.DENOMID        "TDENOMID"    
      FROM
      GWTSDEV.dbContacts C,
      GWTSDEV.dbContactPerson P,
      GWTSDEV.dbContactPerson S,
      GWTSDEV.dbContactPerson T
     WHERE (C.ContactID =  P.ContactID(+)      AND      P.ContactType(+)      = 'P')
      AND  (C.ContactID =  S.ContactID(+)       AND      S.ContactType(+)      = 'S')
      AND  (C.ContactID =  T.ContactID(+)       AND      T.ContactType(+)      = 'T')
      AND  C.ContactID in (      select distinct dbConcats.ContactID
                                           from   dbConcats
                                           where  dbConcats.CategoryID in  (P_Prospects,
                                                                  P_Marketing,
                                                                 P_Trust,
                                                                  P_Retail,
                                                                  P_Origination,
                                                                  P_Vendor,
                                                                  P_Church,
                                                                  P_Pastor,
                                                                  P_ContactOnly,
                                                                  P_Employee,
                                                                  P_CapitalGifts,
                                                                  P_ChurchLoans,
                                                                  P_GroupFilter ));

  END Contacts_Query_RefCur;
 
----------------------- DML and Locking Procedures  ---------------------------------
-----------------------     Using PL/SQL Tables     ---------------------------------
-----------------------  Work Around for FRM-10766  ---------------------------------

PROCEDURE dbContacts_Query(P_Tab_Data IN OUT Contacts_Tab, P_ContactID IN NUMBER) IS
  i NUMBER;
   
  CURSOR dbContacts_Cur IS      
    SELECT      
        C.CONTACTID,
        C.TAXID,
      C.INACTIVEFLAG,
      C.PENDINGFLAG,
      C.COMPANYNAME,
      C.EMAILADDRESS,
      C.WEBPAGE,
      C.DENOMPREFID,
      C.INTERESTTYPEPREF,
      C.CITIZEN,
      C.ISSUEPREFID,
      C.LASTINQUIRY,
      C.DATELASTINQ,
      C.AVAILTIMESTART,
      C.AVAILTIMEEND,
      C.PERMGRANTED,
      C.DONTCALL,
      C.COMMENTFIELD,
      P.CONTACTID        "PCONTACTID",
      P.CONTACTTYPE        "PCONTACTTYPE",
      P.TAXID        "PTAXID",
      P.PREFIX        "PPREFIX",
      P.FIRSTNAME        "PFIRSTNAME",
      P.MIDDLENAME        "PMIDDLENAME",
      P.LASTNAME        "PLASTNAME",
      P.SUFFIX        "PSUFFIX",
      P.ADDRESS1        "PADDRESS1",
      P.ADDRESS2        "PADDRESS2",
      P.CITY                "PCITY",
      P.STATE        "PSTATE",
      P.ZIPCODE        "PZIPCODE",
      P.WORKPHONE        "PWORKPHONE",
      P.HOMEPHONE        "PHOMEPHONE",
      P.FAXNUMBER        "PFAXNUMBER",
      P.BIRTHDATE        "PBIRTHDATE",
      P.MARITALSTATUS        "PMARITALSTATUS",
      P.DRIVERLICENSENO        "PDRIVERLICENSENO",
      P.DRIVERSTATE        "PDRIVERSTATE",
      P.DENOMID        "PDENOMID",
      S.CONTACTID        "SCONTACTID",
      S.CONTACTTYPE        "SCONTACTTYPE",
      S.TAXID        "STAXID",
      S.PREFIX        "SPREFIX",
      S.FIRSTNAME        "SFIRSTNAME",
      S.MIDDLENAME        "SMIDDLENAME",
      S.LASTNAME        "SLASTNAME",
      S.SUFFIX        "SSUFFIX",
      S.ADDRESS1        "SADDRESS1",
      S.ADDRESS2        "SADDRESS2",
      S.CITY                "SCITY",
      S.STATE        "SSTATE",
      S.ZIPCODE        "SZIPCODE",
      S.WORKPHONE        "SWORKPHONE",
      S.HOMEPHONE        "SHOMEPHONE",
      S.FAXNUMBER        "SFAXNUMBER",
      S.BIRTHDATE        "SBIRTHDATE",
      S.MARITALSTATUS        "SMARITALSTATUS",
      S.DRIVERLICENSENO        "SDRIVERLICENSENO",
      S.DRIVERSTATE        "SDRIVERSTATE",
      S.DENOMID        "SDENOMID",
      T.CONTACTID        "TCONTACTID",
      T.CONTACTTYPE        "TCONTACTTYPE",
      T.TAXID        "TTAXID",
      T.PREFIX        "TPREFIX",
      T.FIRSTNAME        "TFIRSTNAME",
      T.MIDDLENAME        "TMIDDLENAME",
      T.LASTNAME        "TLASTNAME",
      T.SUFFIX        "TSUFFIX",
      T.ADDRESS1        "TADDRESS1",
      T.ADDRESS2        "TADDRESS2",
      T.CITY                "TCITY",
      T.STATE        "TSTATE",
      T.ZIPCODE        "TZIPCODE",
      T.WORKPHONE        "TWORKPHONE",
      T.HOMEPHONE        "THOMEPHONE",
      T.FAXNUMBER        "TFAXNUMBER",
      T.BIRTHDATE        "TBIRTHDATE",
      T.MARITALSTATUS        "TMARITALSTATUS",
      T.DRIVERLICENSENO        "TDRIVERLICENSENO",
      T.DRIVERSTATE        "TDRIVERSTATE",
      T.DENOMID        "TDENOMID"
      FROM
      GWTSDEV.dbContacts C,
      GWTSDEV.dbContactPerson P,
      GWTSDEV.dbContactPerson S,
      GWTSDEV.dbContactPerson T
     WHERE (C.ContactID = P.ContactID(+)      AND  P.ContactType(+)     = 'P')
      AND  (C.ContactID = S.ContactID(+)      AND  S.ContactType(+)        = 'S')
      AND  (C.ContactID = T.ContactID(+)      AND  T.ContactType(+)        = 'T')      
      ORDER  BY P.LastName;  

  BEGIN    

        OPEN dbContacts_Cur;    
          i := 1;    
        LOOP        
        
         FETCH dbContacts_Cur
          INTO  
            P_Tab_Data(i).CONTACTID,              
            P_Tab_Data(i).TAXID,                  
            P_Tab_Data(i).INACTIVEFLAG,
            P_Tab_Data(i).PENDINGFLAG,            
            P_Tab_Data(i).COMPANYNAME,              
            P_Tab_Data(i).EMAILADDRESS,          
            P_Tab_Data(i).WEBPAGE,          
            P_Tab_Data(i).DENOMPREFID,            
            P_Tab_Data(i).INTERESTTYPEPREF,              
            P_Tab_Data(i).CITIZEN,
            P_Tab_Data(i).ISSUEPREFID,
            P_Tab_Data(i).LASTINQUIRY,            
            P_Tab_Data(i).DATELASTINQ,
--            P_Tab_Data(i).PRIMARYREPID,            
            P_Tab_Data(i).AVAILTIMESTART,        
            P_Tab_Data(i).AVAILTIMEEND,
            P_Tab_Data(i).PERMGRANTED,
            P_Tab_Data(i).DONTCALL,
            P_Tab_Data(i).COMMENTFIELD,
            P_Tab_Data(i).P_CONTACTID,
            P_Tab_Data(i).P_CONTACTTYPE,
            P_Tab_Data(i).P_TAXID,
            P_Tab_Data(i).P_PREFIX,
            P_Tab_Data(i).P_FIRSTNAME,
            P_Tab_Data(i).P_MIDDLENAME,
            P_Tab_Data(i).P_LASTNAME,
            P_Tab_Data(i).P_SUFFIX,
            P_Tab_Data(i).P_ADDRESS1,            
            P_Tab_Data(i).P_ADDRESS2,            
            P_Tab_Data(i).P_CITY,                
            P_Tab_Data(i).P_STATE,              
            P_Tab_Data(i).P_ZIPCODE,            
            P_Tab_Data(i).P_WORKPHONE,          
            P_Tab_Data(i).P_HOMEPHONE,          
            P_Tab_Data(i).P_FAXNUMBER,          
            P_Tab_Data(i).P_BIRTHDATE,          
            P_Tab_Data(i).P_MARITALSTATUS,
            P_Tab_Data(i).P_DRIVERLICENSENO,            
            P_Tab_Data(i).P_DRIVERSTATE,            
            P_Tab_Data(i).P_DENOMID,
            P_Tab_Data(i).S_CONTACTID,                
            P_Tab_Data(i).S_CONTACTTYPE,            
            P_Tab_Data(i).S_TAXID,              
            P_Tab_Data(i).S_PREFIX,              
            P_Tab_Data(i).S_FIRSTNAME,          
            P_Tab_Data(i).S_MIDDLENAME,          
            P_Tab_Data(i).S_LASTNAME,
            P_Tab_Data(i).S_SUFFIX,            
            P_Tab_Data(i).S_ADDRESS1,            
            P_Tab_Data(i).S_ADDRESS2,            
            P_Tab_Data(i).S_CITY,                
            P_Tab_Data(i).S_STATE,              
            P_Tab_Data(i).S_ZIPCODE,            
            P_Tab_Data(i).S_WORKPHONE,          
            P_Tab_Data(i).S_HOMEPHONE,          
            P_Tab_Data(i).S_FAXNUMBER,          
            P_Tab_Data(i).S_BIRTHDATE,          
            P_Tab_Data(i).S_MARITALSTATUS,
            P_Tab_Data(i).S_DRIVERLICENSENO,            
            P_Tab_Data(i).S_DRIVERSTATE,            
            P_Tab_Data(i).S_DENOMID,      
            P_Tab_Data(i).T_CONTACTID,                
            P_Tab_Data(i).T_CONTACTTYPE,            
            P_Tab_Data(i).T_TAXID,              
            P_Tab_Data(i).T_PREFIX,              
            P_Tab_Data(i).T_FIRSTNAME,          
            P_Tab_Data(i).T_MIDDLENAME,          
            P_Tab_Data(i).T_LASTNAME,
            P_Tab_Data(i).T_SUFFIX,            
            P_Tab_Data(i).T_ADDRESS1,            
            P_Tab_Data(i).T_ADDRESS2,            
            P_Tab_Data(i).T_CITY,                
            P_Tab_Data(i).T_STATE,              
            P_Tab_Data(i).T_ZIPCODE,            
            P_Tab_Data(i).T_WORKPHONE,          
            P_Tab_Data(i).T_HOMEPHONE,          
            P_Tab_Data(i).T_FAXNUMBER,          
            P_Tab_Data(i).T_BIRTHDATE,          
            P_Tab_Data(i).T_MARITALSTATUS,
            P_Tab_Data(i).T_DRIVERLICENSENO,            
            P_Tab_Data(i).T_DRIVERSTATE,            
            P_Tab_Data(i).T_DENOMID;    

         EXIT WHEN dbContacts_Cur%notfound;        
                i := i + 1;    
         END LOOP;

    CLOSE dbContacts_Cur;

  END dbContacts_Query;

----------------------------- dbCONTACTS_INSERT_TAB --------------------------------
 
 PROCEDURE dbContacts_Insert_Tab(P_Tab_Data IN Contacts_tab)
 IS
   cnt NUMBER;
  BEGIN    
   cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
          INSERT INTO dbcontacts
                   (CONTACTID,                       
            TAXID,                 
            COMPANYNAME,          
            EMAILADDRESS,            
            WEBPAGE,                
            DENOMPREFID,            
            INTERESTTYPEPREF,      
            CITIZEN,                
            ISSUEPREFID,            
            LASTINQUIRY,            
            DATELASTINQ,            
--            PRIMARYREPID,          
            COMMENTFIELD,          
            AVAILTIMESTART,        
            AVAILTIMEEND)
        values
            (P_Tab_Data(i).ContactID,
            P_Tab_Data(i).Taxid,
            P_Tab_Data(i).CompanyName,
            P_Tab_Data(i).EmailAddress,
            P_Tab_Data(i).WebPage,
            P_Tab_Data(i).DenomPrefID,
            P_Tab_Data(i).InteresttypePref,
            P_Tab_Data(i).Citizen,
            P_Tab_Data(i).IssuePrefID,
            P_Tab_Data(i).LastInquiry,
            P_Tab_Data(i).DateLastInq,
--            P_Tab_Data(i).PrimaryRepID,
            P_Tab_Data(i).CommentField,
            P_Tab_Data(i).AvailTimeStart,
              P_Tab_Data(i).AvailTimeEnd);
        END LOOP;
            
   cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
          INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES                                                             
            (P_Tab_Data(i).P_CONTACTID,
            P_Tab_Data(i).P_CONTACTTYPE,
            P_Tab_Data(i).P_TAXID,
            P_Tab_Data(i).P_PREFIX,
            P_Tab_Data(i).P_FIRSTNAME,
            P_Tab_Data(i).P_MIDDLENAME,
            P_Tab_Data(i).P_LASTNAME,
            P_Tab_Data(i).P_SUFFIX,
            P_Tab_Data(i).P_ADDRESS1,            
            P_Tab_Data(i).P_ADDRESS2,            
            P_Tab_Data(i).P_CITY,                
            P_Tab_Data(i).P_STATE,              
            P_Tab_Data(i).P_ZIPCODE,            
            P_Tab_Data(i).P_WORKPHONE,          
            P_Tab_Data(i).P_HOMEPHONE,          
            P_Tab_Data(i).P_FAXNUMBER,          
            P_Tab_Data(i).P_BIRTHDATE,          
            P_Tab_Data(i).P_MARITALSTATUS,
            P_Tab_Data(i).P_DRIVERLICENSENO,            
            P_Tab_Data(i).P_DRIVERSTATE,            
            P_Tab_Data(i).P_DENOMID);
       END LOOP;
            
   cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
          INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES
            (P_Tab_Data(i).S_CONTACTID,                
            P_Tab_Data(i).S_CONTACTTYPE,            
            P_Tab_Data(i).S_TAXID,              
            P_Tab_Data(i).S_PREFIX,              
            P_Tab_Data(i).S_FIRSTNAME,          
            P_Tab_Data(i).S_MIDDLENAME,          
            P_Tab_Data(i).S_LASTNAME,
            P_Tab_Data(i).S_SUFFIX,            
            P_Tab_Data(i).S_ADDRESS1,            
            P_Tab_Data(i).S_ADDRESS2,            
            P_Tab_Data(i).S_CITY,                
            P_Tab_Data(i).S_STATE,              
            P_Tab_Data(i).S_ZIPCODE,            
            P_Tab_Data(i).S_WORKPHONE,          
            P_Tab_Data(i).S_HOMEPHONE,          
            P_Tab_Data(i).S_FAXNUMBER,          
            P_Tab_Data(i).S_BIRTHDATE,          
            P_Tab_Data(i).S_MARITALSTATUS,
            P_Tab_Data(i).S_DRIVERLICENSENO,            
            P_Tab_Data(i).S_DRIVERSTATE,            
            P_Tab_Data(i).S_DENOMID);
      END LOOP;
            
   cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
          INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES
                (P_Tab_Data(i).T_CONTACTID,                
            P_Tab_Data(i).T_CONTACTTYPE,            
            P_Tab_Data(i).T_TAXID,              
            P_Tab_Data(i).T_PREFIX,              
            P_Tab_Data(i).T_FIRSTNAME,          
            P_Tab_Data(i).T_MIDDLENAME,          
            P_Tab_Data(i).T_LASTNAME,
            P_Tab_Data(i).T_SUFFIX,            
            P_Tab_Data(i).T_ADDRESS1,            
            P_Tab_Data(i).T_ADDRESS2,            
            P_Tab_Data(i).T_CITY,                
            P_Tab_Data(i).T_STATE,              
            P_Tab_Data(i).T_ZIPCODE,            
            P_Tab_Data(i).T_WORKPHONE,          
            P_Tab_Data(i).T_HOMEPHONE,          
            P_Tab_Data(i).T_FAXNUMBER,          
            P_Tab_Data(i).T_BIRTHDATE,          
            P_Tab_Data(i).T_MARITALSTATUS,
            P_Tab_Data(i).T_DRIVERLICENSENO,            
            P_Tab_Data(i).T_DRIVERSTATE,            
            P_Tab_Data(i).T_DENOMID);
        END LOOP;

   END dbContacts_Insert_Tab;

---------------------------dbCONTACTS_UPDATE_TAB ------------------------------------

   PROCEDURE dbContacts_Update_Tab(P_Tab_Data IN Contacts_tab) IS
      i NUMBER;
      cnt NUMBER;
   BEGIN
      cnt := P_Tab_Data.count;
      FOR i IN 1..cnt LOOP
          UPDATE dbContacts
        SET
            CONTACTID             =  P_Tab_Data(i).ContactID,          
            TAXID               =  P_Tab_Data(i).Taxid,
            COMPANYNAME           =       P_Tab_Data(i).CompanyName,
            EMAILADDRESS          =  P_Tab_Data(i).EmailAddress,
            WEBPAGE               =  P_Tab_Data(i).WebPage,
            DENOMPREFID           =  P_Tab_Data(i).DenomPrefID,
            INTERESTTYPEPREF      =  P_Tab_Data(i).InteresttypePref,
            CITIZEN               =       P_Tab_Data(i).Citizen,
            ISSUEPREFID           =  P_Tab_Data(i).IssuePrefID,
            LASTINQUIRY           =  P_Tab_Data(i).LastInquiry,
            DATELASTINQ           =  P_Tab_Data(i).DateLastInq,
--            PRIMARYREPID          =  P_Tab_Data(i).PrimaryRepID,
            COMMENTFIELD          =  P_Tab_Data(i).CommentField,
            AVAILTIMESTART        =  P_Tab_Data(i).AvailTimeStart,
            AVAILTIMEEND          =  P_Tab_Data(i).AvailTimeEnd
        WHERE dbcontacts.ContactID  =  P_Tab_Data(i).ContactID;
        END LOOP;

      cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
            UPDATE dbContactperson
          SET
            CONTACTID            = P_Tab_Data(i).P_CONTACTID,
             CONTACTTYPE            = P_Tab_Data(i).P_CONTACTTYPE,
            TAXID                  = P_Tab_Data(i).P_TAXID,
            PREFIX                  = P_Tab_Data(i).P_PREFIX,                                            
             FIRSTNAME               = P_Tab_Data(i).P_FIRSTNAME,                  
            MIDDLENAME            = P_Tab_Data(i).P_MIDDLENAME,                                      
            LASTNAME                = P_Tab_Data(i).P_LASTNAME,                  
            SUFFIX                  = P_Tab_Data(i).P_SUFFIX,                          
            ADDRESS1                = P_Tab_Data(i).P_ADDRESS1,                  
            ADDRESS2                = P_Tab_Data(i).P_ADDRESS2,                          
            CITY                    = P_Tab_Data(i).P_CITY,                
            STATE                   = P_Tab_Data(i).P_STATE,                  
            ZIPCODE                 = P_Tab_Data(i).P_ZIPCODE,                
            WORKPHONE               = P_Tab_Data(i).P_WORKPHONE,                          
            HOMEPHONE               = P_Tab_Data(i).P_HOMEPHONE,                          
            FAXNUMBER               = P_Tab_Data(i).P_FAXNUMBER,                          
            BIRTHDATE               = P_Tab_Data(i).P_BIRTHDATE,                          
            MARITALSTATUS           = P_Tab_Data(i).P_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Tab_Data(i).P_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Tab_Data(i).P_DRIVERSTATE,                          
             DENOMID                  = P_Tab_Data(i).P_DENOMID
        WHERE dbContactperson.ContactID  =  P_Tab_Data(i).ContactID;
      END LOOP;

        cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
            UPDATE dbContactperson
          SET
            CONTACTID            = P_Tab_Data(i).S_CONTACTID,
             CONTACTTYPE            = P_Tab_Data(i).S_CONTACTTYPE,
            TAXID                  = P_Tab_Data(i).S_TAXID,
            PREFIX                  = P_Tab_Data(i).S_PREFIX,                                            
             FIRSTNAME               = P_Tab_Data(i).S_FIRSTNAME,                  
            MIDDLENAME            = P_Tab_Data(i).S_MIDDLENAME,                                      
            LASTNAME                = P_Tab_Data(i).S_LASTNAME,                  
            SUFFIX                  = P_Tab_Data(i).S_SUFFIX,                          
            ADDRESS1                = P_Tab_Data(i).S_ADDRESS1,                  
            ADDRESS2                = P_Tab_Data(i).S_ADDRESS2,                          
            CITY                    = P_Tab_Data(i).S_CITY,                
            STATE                   = P_Tab_Data(i).S_STATE,                  
            ZIPCODE                 = P_Tab_Data(i).S_ZIPCODE,                
            WORKPHONE               = P_Tab_Data(i).S_WORKPHONE,                          
            HOMEPHONE               = P_Tab_Data(i).S_HOMEPHONE,                          
            FAXNUMBER               = P_Tab_Data(i).S_FAXNUMBER,                          
            BIRTHDATE               = P_Tab_Data(i).S_BIRTHDATE,                          
            MARITALSTATUS           = P_Tab_Data(i).S_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Tab_Data(i).S_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Tab_Data(i).S_DRIVERSTATE,                          
             DENOMID                  = P_Tab_Data(i).S_DENOMID
        WHERE dbContactperson.ContactID  =  P_Tab_Data(i).ContactID;
      END LOOP;

      cnt := P_Tab_Data.count;
        FOR i IN 1..cnt LOOP
            UPDATE dbContactperson
          SET
            CONTACTID            = P_Tab_Data(i).T_CONTACTID,
             CONTACTTYPE            = P_Tab_Data(i).T_CONTACTTYPE,
            TAXID                  = P_Tab_Data(i).T_TAXID,
            PREFIX                  = P_Tab_Data(i).T_PREFIX,                                            
             FIRSTNAME               = P_Tab_Data(i).T_FIRSTNAME,                  
            MIDDLENAME            = P_Tab_Data(i).T_MIDDLENAME,                                      
            LASTNAME                = P_Tab_Data(i).T_LASTNAME,                  
            SUFFIX                  = P_Tab_Data(i).T_SUFFIX,                          
            ADDRESS1                = P_Tab_Data(i).T_ADDRESS1,                  
            ADDRESS2                = P_Tab_Data(i).T_ADDRESS2,                          
            CITY                    = P_Tab_Data(i).T_CITY,                
            STATE                   = P_Tab_Data(i).T_STATE,                  
            ZIPCODE                 = P_Tab_Data(i).T_ZIPCODE,                
            WORKPHONE               = P_Tab_Data(i).T_WORKPHONE,                          
            HOMEPHONE               = P_Tab_Data(i).T_HOMEPHONE,                          
            FAXNUMBER               = P_Tab_Data(i).T_FAXNUMBER,                          
            BIRTHDATE               = P_Tab_Data(i).T_BIRTHDATE,                          
            MARITALSTATUS           = P_Tab_Data(i).T_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Tab_Data(i).T_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Tab_Data(i).T_DRIVERSTATE,                          
             DENOMID                  = P_Tab_Data(i).T_DENOMID
        WHERE dbContactperson.ContactID  =  P_Tab_Data(i).ContactID;
      END LOOP;            
 
   END dbContacts_Update_Tab;

------------------------------ dbCONTACTS_DELETE_TAB -------------------------------



  PROCEDURE dbContacts_Delete_Tab(P_Tab_data IN ContactsID_Tab) IS
      cnt NUMBER;

    BEGIN
      cnt := P_Tab_Data.count;

      FOR i IN 1..cnt LOOP
        DELETE FROM dbContacts
          WHERE dbContacts.ContactID = P_Tab_Data(i).ContactID;
        END LOOP;

    END dbContacts_Delete_Tab;

----------------------------- dbCONTACTS_LOC_TAB ------------------------------------

  PROCEDURE dbContacts_Lock_Tab(P_Tab_Data IN ContactsID_tab) IS
      i NUMBER;
      cnt NUMBER;
      block_rec Contacts_Rec;
    BEGIN
      cnt := P_Tab_Data.count;
      FOR i IN 1..cnt LOOP
        Select
        C.CONTACTID,       
        C.INACTIVEFLAG,
        C.TAXID,
        C.COMPANYNAME,
        C.EMAILADDRESS,
        C.WEBPAGE,
        C.DENOMPREFID,
        C.INTERESTTYPEPREF,
        C.CITIZEN,
        C.ISSUEPREFID,
        C.LASTINQUIRY,
        C.DATELASTINQ,
        C.COMMENTFIELD,
        C.AVAILTIMESTART,
        C.AVAILTIMEEND,
        C.PERMGRANTED,
        C.DONTCALL,
        C.PENDINGFLAG,
        P.CONTACTID        "PCONTACTID",
        P.CONTACTTYPE  "PCONTACTTYPE",
        P.TAXID        "PTAXID",
        P.PREFIX        "PPREFIX",
        P.FIRSTNAME        "PFIRSTNAME",
        P.MIDDLENAME        "PMIDDLENAME",
        P.LASTNAME        "PLASTNAME",
        P.SUFFIX        "PSUFFIX",
        P.ADDRESS1        "PADDRESS1",
        P.ADDRESS2        "PADDRESS2",
        P.CITY                "PCITY",
        P.STATE        "PSTATE",
        P.ZIPCODE        "PZIPCODE",
        P.WORKPHONE        "PWORKPHONE",
        P.HOMEPHONE        "PHOMEPHONE",
        P.FAXNUMBER        "PFAXNUMBER",
        P.BIRTHDATE        "PBIRTHDATE",
        P.MARITALSTATUS        "PMARITALSTATUS",
        P.DRIVERLICENSENO        "PDRIVERLICENSENO",
        P.DRIVERSTATE        "PDRIVERSTATE",
        P.DENOMID        "PDENOMID",
        S.CONTACTID        "SCONTACTID",
        S.CONTACTTYPE        "SCONTACTTYPE",
        S.TAXID        "STAXID",
        S.PREFIX        "SPREFIX",
        S.FIRSTNAME        "SFIRSTNAME",
        S.MIDDLENAME        "SMIDDLENAME",
        S.LASTNAME        "SLASTNAME",
        S.SUFFIX        "SSUFFIX",
        S.ADDRESS1        "SADDRESS1",
        S.ADDRESS2        "SADDRESS2",
        S.CITY                "SCITY",
        S.STATE        "SSTATE",
        S.ZIPCODE        "SZIPCODE",
        S.WORKPHONE        "SWORKPHONE",
        S.HOMEPHONE        "SHOMEPHONE",
        S.FAXNUMBER        "SFAXNUMBER",
        S.BIRTHDATE        "SBIRTHDATE",
        S.MARITALSTATUS        "SMARITALSTATUS",
        S.DRIVERLICENSENO        "SDRIVERLICENSENO",
        S.DRIVERSTATE        "SDRIVERSTATE",
        S.DENOMID        "SDENOMID",
        T.CONTACTID        "TCONTACTID",
        T.CONTACTTYPE        "TCONTACTTYPE",
        T.TAXID        "TTAXID",
        T.PREFIX        "TPREFIX",
        T.FIRSTNAME        "TFIRSTNAME",
        T.MIDDLENAME        "TMIDDLENAME",
        T.LASTNAME        "TLASTNAME",
        T.SUFFIX        "TSUFFIX",
        T.ADDRESS1        "TADDRESS1",
        T.ADDRESS2        "TADDRESS2",
        T.CITY                "TCITY",
        T.STATE        "TSTATE",
        T.ZIPCODE        "TZIPCODE",
        T.WORKPHONE        "TWORKPHONE",
        T.HOMEPHONE        "THOMEPHONE",
        T.FAXNUMBER        "TFAXNUMBER",
        T.BIRTHDATE        "TBIRTHDATE",
        T.MARITALSTATUS        "TMARITALSTATUS",
        T.DRIVERLICENSENO        "TDRIVERLICENSENO",
        T.DRIVERSTATE        "TDRIVERSTATE",
        T.DENOMID        "TDENOMID"
     INTO block_rec
     FROM dbContacts
     WHERE dbContacts.ContactID = P_TAB_Data(i).ContactID
     FOR UPDATE NOWAIT;

      END LOOP;

  END dbContacts_Lock_Tab;

--------------------------   COUNT FUNCTION   -------------------------------------

     FUNCTION Count_Query_Func RETURN NUMBER IS
          r NUMBER;  
      BEGIN
            SELECT count(*)
            INTO r
            FROM dbcontacts;
            
            RETURN r;
      END Count_Query_Func;  


/**********************  DML and Locking Procedures  ********************************
-----------------------    based on Doc ID 66887.1
-----------------------   Using Record data types   ---------------------------------


PROCEDURE dbContacts_Insert(P_Record_Data IN contacts_rec) IS  
   BEGIN
      INSERT INTO dbcontacts
                   (CONTACTID,                       
            TAXID,                 
            COMPANYNAME,          
            EMAILADDRESS,            
            WEBPAGE,                
            DENOMPREFID,            
            INTERESTTYPEPREF,      
            CITIZEN,                
            ISSUEPREFID,            
            LASTINQUIRY,            
            DATELASTINQ,            
--            PRIMARYREPID,          
            COMMENTFIELD,          
            AVAILTIMESTART,        
            AVAILTIMEEND)
        values
            (P_Record_Data.ContactID,
            P_Record_Data.Taxid,
            P_Record_Data.CompanyName,
            P_Record_Data.EmailAddress,
            P_Record_Data.WebPage,
            P_Record_Data.DenomPrefID,
            P_Record_Data.InteresttypePref,
            P_Record_Data.Citizen,
            P_Record_Data.IssuePrefID,
            P_Record_Data.LastInquiry,
            P_Record_Data.DateLastInq,
--            P_Record_Data.PrimaryRepID,
            P_Record_Data.CommentField,
            P_Record_Data.AvailTimeStart,
              P_Record_Data.AvailTimeEnd);

      INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES                                                             
            (P_Record_Data.P_CONTACTID,
            P_Record_Data.P_CONTACTTYPE,
            P_Record_Data.P_TAXID,
            P_Record_Data.P_PREFIX,
            P_Record_Data.P_FIRSTNAME,
            P_Record_Data.P_MIDDLENAME,
            P_Record_Data.P_LASTNAME,
            P_Record_Data.P_SUFFIX,
            P_Record_Data.P_ADDRESS1,            
            P_Record_Data.P_ADDRESS2,            
            P_Record_Data.P_CITY,                
            P_Record_Data.P_STATE,              
            P_Record_Data.P_ZIPCODE,            
            P_Record_Data.P_WORKPHONE,          
            P_Record_Data.P_HOMEPHONE,          
            P_Record_Data.P_FAXNUMBER,          
            P_Record_Data.P_BIRTHDATE,          
            P_Record_Data.P_MARITALSTATUS,
            P_Record_Data.P_DRIVERLICENSENO,            
            P_Record_Data.P_DRIVERSTATE,            
            P_Record_Data.P_DENOMID);

      INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES
            (P_Record_Data.S_CONTACTID,                
            P_Record_Data.S_CONTACTTYPE,            
            P_Record_Data.S_TAXID,              
            P_Record_Data.S_PREFIX,              
            P_Record_Data.S_FIRSTNAME,          
            P_Record_Data.S_MIDDLENAME,          
            P_Record_Data.S_LASTNAME,
            P_Record_Data.S_SUFFIX,            
            P_Record_Data.S_ADDRESS1,            
            P_Record_Data.S_ADDRESS2,            
            P_Record_Data.S_CITY,                
            P_Record_Data.S_STATE,              
            P_Record_Data.S_ZIPCODE,            
            P_Record_Data.S_WORKPHONE,          
            P_Record_Data.S_HOMEPHONE,          
            P_Record_Data.S_FAXNUMBER,          
            P_Record_Data.S_BIRTHDATE,          
            P_Record_Data.S_MARITALSTATUS,
            P_Record_Data.S_DRIVERLICENSENO,            
            P_Record_Data.S_DRIVERSTATE,            
            P_Record_Data.S_DENOMID);
 
      INSERT INTO DBCONTACTPERSON
            (CONTACTID,
             CONTACTTYPE,
            TAXID,
            PREFIX,                                            
             FIRSTNAME,                                
            MIDDLENAME,                                        
            LASTNAME,                                  
            SUFFIX,                                            
            ADDRESS1,                                  
            ADDRESS2,                                          
            CITY,                                      
            STATE,                                    
            ZIPCODE,                                  
            WORKPHONE,                                          
            HOMEPHONE,                                          
            FAXNUMBER,                                          
            BIRTHDATE,                                          
            MARITALSTATUS,                                      
            DRIVERLICENSENO,                                    
            DRIVERSTATE,                                        
             DENOMID)
        VALUES
                (P_Record_Data.T_CONTACTID,                
            P_Record_Data.T_CONTACTTYPE,            
            P_Record_Data.T_TAXID,              
            P_Record_Data.T_PREFIX,              
            P_Record_Data.T_FIRSTNAME,          
            P_Record_Data.T_MIDDLENAME,          
            P_Record_Data.T_LASTNAME,
            P_Record_Data.T_SUFFIX,            
            P_Record_Data.T_ADDRESS1,            
            P_Record_Data.T_ADDRESS2,            
            P_Record_Data.T_CITY,                
            P_Record_Data.T_STATE,              
            P_Record_Data.T_ZIPCODE,            
            P_Record_Data.T_WORKPHONE,          
            P_Record_Data.T_HOMEPHONE,          
            P_Record_Data.T_FAXNUMBER,          
            P_Record_Data.T_BIRTHDATE,          
            P_Record_Data.T_MARITALSTATUS,
            P_Record_Data.T_DRIVERLICENSENO,            
            P_Record_Data.T_DRIVERSTATE,            
            P_Record_Data.T_DENOMID);

            COMMIT;  

  END dbContacts_Insert;    
 
 -------------------------  dbCONTACTS UPDATE  ------------------------------------
   
   PROCEDURE dbContacts_Update(P_Record_Data IN contacts_rec) IS  
    BEGIN
      UPDATE dbContacts
        SET
            CONTACTID             =  P_Record_Data.ContactID,          
            TAXID               =  P_Record_Data.Taxid,
            COMPANYNAME           =       P_Record_Data.CompanyName,
            EMAILADDRESS          =  P_Record_Data.EmailAddress,
            WEBPAGE               =  P_Record_Data.WebPage,
            DENOMPREFID           =  P_Record_Data.DenomPrefID,
            INTERESTTYPEPREF      =  P_Record_Data.InteresttypePref,
            CITIZEN               =       P_Record_Data.Citizen,
            ISSUEPREFID           =  P_Record_Data.IssuePrefID,
            LASTINQUIRY           =  P_Record_Data.LastInquiry,
            DATELASTINQ           =  P_Record_Data.DateLastInq,
--            PRIMARYREPID          =  P_Record_Data.PrimaryRepID,
            COMMENTFIELD          =  P_Record_Data.CommentField,
            AVAILTIMESTART        =  P_Record_Data.AvailTimeStart,
            AVAILTIMEEND          =  P_Record_Data.AvailTimeEnd
        WHERE C.ContactID  =  P_Record_Data.ContactID;
       
      UPDATE dbContactperson
          SET
            CONTACTID            = P_Record_Data.P_CONTACTID,
             CONTACTTYPE            = P_Record_Data.P_CONTACTTYPE,
            TAXID                  = P_Record_Data.P_TAXID,
            PREFIX                  = P_Record_Data.P_PREFIX,                                            
             FIRSTNAME               = P_Record_Data.P_FIRSTNAME,                  
            MIDDLENAME            = P_Record_Data.P_MIDDLENAME,                                      
            LASTNAME                = P_Record_Data.P_LASTNAME,                  
            SUFFIX                  = P_Record_Data.P_SUFFIX,                          
            ADDRESS1                = P_Record_Data.P_ADDRESS1,                  
            ADDRESS2                = P_Record_Data.P_ADDRESS2,                          
            CITY                    = P_Record_Data.P_CITY,                
            STATE                   = P_Record_Data.P_STATE,                  
            ZIPCODE                 = P_Record_Data.P_ZIPCODE,                
            WORKPHONE               = P_Record_Data.P_WORKPHONE,                          
            HOMEPHONE               = P_Record_Data.P_HOMEPHONE,                          
            FAXNUMBER               = P_Record_Data.P_FAXNUMBER,                          
            BIRTHDATE               = P_Record_Data.P_BIRTHDATE,                          
            MARITALSTATUS           = P_Record_Data.P_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Record_Data.P_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Record_Data.P_DRIVERSTATE,                          
             DENOMID                  = P_Record_Data.P_DENOMID
        WHERE P.ContactID  =  P_Record_Data.ContactID;
      
        UPDATE dbContactperson
          SET
            CONTACTID            = P_Record_Data.S_CONTACTID,
             CONTACTTYPE            = P_Record_Data.S_CONTACTTYPE,
            TAXID                  = P_Record_Data.S_TAXID,
            PREFIX                  = P_Record_Data.S_PREFIX,                                            
             FIRSTNAME               = P_Record_Data.S_FIRSTNAME,                  
            MIDDLENAME            = P_Record_Data.S_MIDDLENAME,                                      
            LASTNAME                = P_Record_Data.S_LASTNAME,                  
            SUFFIX                  = P_Record_Data.S_SUFFIX,                          
            ADDRESS1                = P_Record_Data.S_ADDRESS1,                  
            ADDRESS2                = P_Record_Data.S_ADDRESS2,                          
            CITY                    = P_Record_Data.S_CITY,                
            STATE                   = P_Record_Data.S_STATE,                  
            ZIPCODE                 = P_Record_Data.S_ZIPCODE,                
            WORKPHONE               = P_Record_Data.S_WORKPHONE,                          
            HOMEPHONE               = P_Record_Data.S_HOMEPHONE,                          
            FAXNUMBER               = P_Record_Data.S_FAXNUMBER,                          
            BIRTHDATE               = P_Record_Data.S_BIRTHDATE,                          
            MARITALSTATUS           = P_Record_Data.S_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Record_Data.S_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Record_Data.S_DRIVERSTATE,                          
             DENOMID                  = P_Record_Data.S_DENOMID
        WHERE S.ContactID  =  P_Record_Data.ContactID;
             
          UPDATE dbContactperson
          SET
            CONTACTID            = P_Record_Data.T_CONTACTID,
             CONTACTTYPE            = P_Record_Data.T_CONTACTTYPE,
            TAXID                  = P_Record_Data.T_TAXID,
            PREFIX                  = P_Record_Data.T_PREFIX,                                            
             FIRSTNAME               = P_Record_Data.T_FIRSTNAME,                  
            MIDDLENAME            = P_Record_Data.T_MIDDLENAME,                                      
            LASTNAME                = P_Record_Data.T_LASTNAME,                  
            SUFFIX                  = P_Record_Data.T_SUFFIX,                          
            ADDRESS1                = P_Record_Data.T_ADDRESS1,                  
            ADDRESS2                = P_Record_Data.T_ADDRESS2,                          
            CITY                    = P_Record_Data.T_CITY,                
            STATE                   = P_Record_Data.T_STATE,                  
            ZIPCODE                 = P_Record_Data.T_ZIPCODE,                
            WORKPHONE               = P_Record_Data.T_WORKPHONE,                          
            HOMEPHONE               = P_Record_Data.T_HOMEPHONE,                          
            FAXNUMBER               = P_Record_Data.T_FAXNUMBER,                          
            BIRTHDATE               = P_Record_Data.T_BIRTHDATE,                          
            MARITALSTATUS           = P_Record_Data.T_MARITALSTATUS,                          
            DRIVERLICENSENO         = P_Record_Data.T_DRIVERLICENSENO,                          
            DRIVERSTATE             = P_Record_Data.T_DRIVERSTATE,                          
             DENOMID                  = P_Record_Data.T_DENOMID
        WHERE T.ContactID  =  P_Record_Data.ContactID;
          
    END dbContacts_Update;    

---------------------------  dbCONTACTS_DELETE  -----------------------------------

   
    PROCEDURE dbContacts_Delete(P_Record_Data IN contacts_rec) IS
     BEGIN
            DELETE
            FROM dbContacts
            WHERE ContactID = P_Record_Data.ContactID;  
     END dbContacts_Delete;

   

---------------------------  dbCONTACTS_LOCK   ------------------------------------
 
  PROCEDURE dbContacts_lock(P_ContactID IN dbContacts.contactid%TYPE) IS
       v_rownum NUMBER;  
   BEGIN
          SELECT dbcontactPERSON.contactid
            INTO v_rownum
            FROM dbcontactPERSON      
            WHERE P.contactid = P_ContactID        
            FOR UPDATE;  
   END dbContacts_lock;


--------------------------   COUNT FUNCTION   -------------------------------------

     FUNCTION Count_Query_Func RETURN NUMBER IS
          r NUMBER;  
      BEGIN
            SELECT count(*)
            INTO r
            FROM dbcontacts;
            
            RETURN r;
      END Count_Query_Func;    


**********************************************************************************/

END CALBAPTIST_DATASOURCE;
/

tab

Commented:
In  dbContacts_Lock_Tab you are referencing several aliases (S, T , P , C ) that are not in the from clause.

What is line 23/24

In sqlplus you can type l  20 30 (it's L)

sqlplus>l 20 30

Author

Commented:
SQL> l 20 30
 20
 21    BEGIN
 22
 23      OPEN P_Block_Data FOR
 24
 25        Select C.CONTACTID,
 26     C.INACTIVEFLAG,
 27     C.TAXID,
 28     C.COMPANYNAME,
 29     C.EMAILADDRESS,
 30*    C.WEBPAGE,
SQL>
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION

Author

Commented:
Thank you for all of the help!

tab
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.