Advertisement

02.17.2004 at 10:38AM PST, ID: 20888229
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

5.0

Datasource pkg

Asked by uTab in Oracle 3rd Party Tools

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,               &n