Ok - I think I get what your saying and so I changed my procedure to read (see lines with * after):
CREATE PROCEDURE NAME_CHG5
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN
DECLARE YEST CHAR(8);
DECLARE HOSP DEC(3,0);
DECLARE SPID CHAR(20);
DECLARE PREVLN CHAR(35);
DECLARE NEWLN CHAR(35);
DECLARE PREVFN CHAR(35);
DECLARE PREVMN CHAR(35);
DECLARE NEWFN CHAR(35);
DECLARE NEWMN CHAR(35);
DECLARE CHGDATE NUMERIC(8,0);
DECLARE CCHGDATE CHAR(8);
DECLARE CHGBY CHAR(4);
DECLARE YEST2 DATE;
DECLARE CPNNMDT NUMERIC(10);
DECLARE DYEST2 DEC(8,0);
CREATE PROCEDURE NAME_CHG5
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN
DECLARE YEST CHAR(8);
DECLARE HOSP DEC(3,0);
DECLARE SPID CHAR(20);
DECLARE PREVLN CHAR(35);
DECLARE NEWLN CHAR(35);
DECLARE PREVFN CHAR(35);
DECLARE PREVMN CHAR(35);
DECLARE NEWFN CHAR(35);
DECLARE NEWMN CHAR(35);
DECLARE CHGDATE NUMERIC(8,0);
DECLARE CCHGDATE CHAR(8);
DECLARE CHGBY CHAR(4);
DECLARE YEST2 DATE;
DECLARE CPNNMDT NUMERIC(10);
DECLARE DYEST2 DEC(8,0);
DECLARE NOT_FOUND CONDITION FOR SQLSTATE '02000';
DECLARE EOF_COND CHAR(1) DEFAULT '0';
DECLARE CSR1 CURSOR FOR
SELECT PNHSP, PNSPID, PNLSTN,
PNFSTN, PNMIDN, PELSTN,
PEFSTN, PNNMDT, PNLMBY
FROM BADMPNU, BADMPEU
WHERE PNHSP = PEHSP AND PNSPID = PESPID AND PNNMDT <> 0; *
CPNNMDT = DYEST2;
DECLARE CONTINUE HANDLER FOR NOT_FOUND SET EOF_COND = '1';
SET CPNNMDT = CHAR(BADMPNU.PNNMDT); *
SET YEST2 = CURDATE() - 1 DAY;
SET DYEST2 = CHAR(YEST2,ISO);
DELETE FROM NAMECHG;
OPEN CSR1;
RPT: REPEAT
FETCH CSR1
INTO HOSP, SPID, PREVLN, PREVFN, PREVMN, NEWLN, NEWFN, NEWMN,
CHGDATE, CHGBY;
IF CPNNMDT = DYEST2 THEN *
INSERT INTO NAMECHG VALUES(HOSP, SPID, PREVLN, PREVFN, PREVMN, NEWLN, NEWFN,
NEWMN, CHGDATE, CHGBY)*
ENDIF;*
UNTIL EOF_COND = '1'
END REPEAT RPT;
CLOSE CSR1;
END;
I'm still getting the following errors:
MSG ID SEV RECORD TEXT
SQL0312 30 30 Position 2 Variable PNNMDT not defined or not usable.
SQL0104 30 42 Position 3 Token ENDIF was not valid. Valid tokens: ;.
Message Summary
Total Info Warning Error Severe Terminal
2 0 0 0 2 0
30 level severity errors found in source
* * * * * E N D O F L I S T I N G * * * * *
Any suggestions?
Main Topics
Browse All Topics





by: tliottaPosted on 2007-01-26 at 18:35:12ID: 18408751
Jeanniem:
Please show where PNNMDT is declared.
I mean, I see that you have a cursor defined over a SELECT, but you appear to be FETCHing into declared SQL variable CHGDATE. However, you are using CHAR(PNNMDT). And you're using it before even FETCHing, before even opening the cursor.
Hmmm?
Tom