Embedded SQL returning uncatchable error - Procedure/Trigger

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • NotepadZ
    New Member
    • Aug 2008
    • 1

    Embedded SQL returning uncatchable error - Procedure/Trigger

    I am getting a frustrating error when i try to insert into the table the trigger i created is on.

    Any insight would be appreciated

    Error:
    Code:
    db2 => INSERT INTO trstat VALUES ('340758A',     'POSITION', timestamp ( '2008-08-14-13.53.38.000000' ), '-',             272816, '[0432642N0794126W]No Zone Match',
                'TM4WIN',                    365374, 'ONOAK')
    DB21034E  The command was processed as an SQL statement because it was not a
    valid Command Line Processor command.  During SQL processing it returned:
    SQL0723N  An error occurred in a triggered SQL statement in trigger
    "USER.RCC_PTIMEST".  Information returned for the error includes SQLCODE
    "-746", SQLSTATE "57053" and message tokens
    "USER.RCC_PROC_PTIMESTAMP|SQL08081417151250".  SQLSTATE=09000
    Code
    Code:
    --#SET TERMINATOR @ 
    DROP TRIGGER rcc_ptimestamp
    @
    DROP PROCEDURE rcc_proc_ptimestamp
    @
    
    CREATE PROCEDURE rcc_proc_ptimestamp(
    	IN p_code			VARCHAR(10),
    	IN p_new_time	TIMESTAMP,
    	IN p_trip_num	INTEGER,
    	IN p_status		VARCHAR(10)
    )
    	LANGUAGE SQL
    	MODIFIES SQL DATA
    	
    	P1:BEGIN ATOMIC
    
    	DECLARE v_count1 INTEGER DEFAULT 0;
    	DECLARE v_count2 INTEGER DEFAULT 0;
    	DECLARE	v_old_time	TIMESTAMP;
    	DECLARE SQLCODE INTEGER DEFAULT 0;
    
    	SELECT count(time_changed) INTO v_count2 FROM trstat WHERE trip_9 = p_trip_num AND code = p_code AND status = 'ENRTE';
    	SELECT time_changed INTO v_old_time FROM trstat WHERE trip_9 = p_trip_num AND code = p_code AND status = 'ENRTE';  
    	
    	IF p_status = 'ENRTE' THEN
    		--ENTER INTO rcc_ptimestamp --current En Routed trips
    		INSERT INTO rcc_ptimestamp (trip_number, start_time) VALUES (p_trip_num, p_new_time);
    	ELSEIF v_count2 <> 0 THEN			
    		SELECT count(*) INTO v_count1 FROM rcc_timestamp WHERE trip_number = p_trip_num AND start_time = v_old_time;
    
                    --verify no duplicates in historical table
    		IF v_count1 = 0 THEN
    			--match
    		 	--INSERT INTO rcc_timestamp
    		 	INSERT INTO rcc_timestamp (trip_number, start_time, end_time, duration) VALUES (p_trip_num, v_old_time, p_new_time, (p_new_time - v_old_time));
    		 	--DELETE FROM rcc_ptimestamp
    		 	DELETE FROM rcc_ptimestamp WHERE trip_number = p_trip_num AND start_time = v_old_time;
    		END IF;
    	END IF;
    END@
    
    
    CREATE TRIGGER rcc_ptimestamp AFTER INSERT ON trstat
    REFERENCING 
    	NEW AS NEW
    FOR EACH ROW MODE DB2SQL 
    
    BEGIN ATOMIC	
    	CALL rcc_proc_ptimestamp(NEW.code, NEW.time_changed, NEW.trip_9, NEW.status);
    END@
    
    --#SET TERMINATOR ;
Working...