We have a developer that is inserting a large number of records using a VB program.  
An insert trigger exists on the table.  This trigger checks a parent table for 
records.  I know this trigger really is not needed, since a Foreign Key exists to 
enforce referential integrity, so I plan to disable it (furthermore, it does a SELECT 
FOR UPDATE, which doesn't make sense).  However, I'm trying to understand why the 
developer keeps getting "ORA-01000: maximum open cursors exceeded" during the inserts. 
 I've bumped OPEN_CURSORS up to 1000.  Is there something unique to VB that could be 
causing this problem?  I've done mass inserts before on tables that have triggers 
without running into this type of problem.  I can't see any problem in the trigger 
logic, since the cursor is always closed.
This is a 9.2.0.3 database on Tru64.

Thanks,
Jay

The source for the trigger is:

CREATE OR REPLACE TRIGGER "TOPAS".TI_CABLE_PAIRS BEFORE INSERT
ON CABLE_PAIRS FOR EACH ROW
DECLARE
    INTEGRITY_ERROR  EXCEPTION;
    ERRNO            INTEGER;
    ERRMSG           CHAR(200);
    DUMMY            INTEGER;
    FOUND            BOOLEAN;
    --  DECLARATION OF INSERTCHILDPARENTEXIST CONSTRAINT FOR THE PARENT "EXCHANGES"
    CURSOR CPK1_CABLE_PAIRS(VAR_EXCHANGE VARCHAR) IS
       SELECT 1
       FROM   EXCHANGES
       WHERE  EXCHANGE = VAR_EXCHANGE
        AND   VAR_EXCHANGE IS NOT NULL
        FOR UPDATE OF EXCHANGE;
BEGIN
    --  PARENT "EXCHANGES" MUST EXIST WHEN INSERTING A CHILD IN "CABLE_PAIRS"
    IF :NEW.EXCHANGE IS NOT NULL THEN
       OPEN  CPK1_CABLE_PAIRS(:NEW.EXCHANGE);
       FETCH CPK1_CABLE_PAIRS INTO DUMMY;
       FOUND := CPK1_CABLE_PAIRS%FOUND;
       CLOSE CPK1_CABLE_PAIRS;
       IF NOT FOUND THEN
          ERRNO  := -20002;
          ERRMSG := 'Parent does not exist in "EXCHANGES". Cannot create child in 
"CABLE_PAIRS".';
          RAISE INTEGRITY_ERROR;
       END IF;
    END IF;
--  ERRORS HANDLING
EXCEPTION
    WHEN INTEGRITY_ERROR THEN
       RAISE_APPLICATION_ERROR(ERRNO, ERRMSG);
END;
/



**DISCLAIMER
This e-mail message and any files transmitted with it are intended for the use of the 
individual or entity to which they are addressed and may contain information that is 
privileged, proprietary and confidential. If you are not the intended recipient, you 
may not use, copy or disclose to anyone the message or any information contained in 
the message. If you have received this communication in error, please notify the 
sender and delete this e-mail message. The contents do not represent the opinion of 
D&E except to the extent that it relates to their official business.
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Jay Hostetter
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to