• Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
  • Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!

AS400 Stored Procedures

Collapse
X
  •  
  • Filter
  • Time
  • Show
Clear All
new posts

    AS400 Stored Procedures

    I'm trying to delete a bunch of records based on the results from a cursor. It's not throwing an error, but no delete is happening.

    This works:-

    Code:
    OPEN priceDetailsCursor;
    	
    FETCH priceDetailsCursor INTO priceDetailsPrimaryKey;
    	
    --WHILE (endCursor = 0) DO
    	DELETE FROM MMNBDLIB.PRCTAX WHERE FKPRCDET = priceDetailsPrimaryKey;
    --	SET endCursor = -1;
    --END WHILE;
    	
    CLOSE priceDetailsCursor;
    This doesn't:-

    Code:
    OPEN priceDetailsCursor;
    	
    FETCH priceDetailsCursor INTO priceDetailsPrimaryKey;
    	
    WHILE (endCursor = 0) DO
    	DELETE FROM MMNBDLIB.PRCTAX WHERE FKPRCDET = priceDetailsPrimaryKey;
    	SET endCursor = -1;
    END WHILE;
    	
    CLOSE priceDetailsCursor;
    In the "Explain SQL" option in the iSeries Navigator it says "SQL5065 Access plan not found." when it tries to do the delete, but no exception is thrown. priceDetailsPrimaryKey is being set to the correct value as I've checked by setting an out parameter to its value. I've Googled to no avail. Anyone got any ideas?
    Listen to my last album on Spotify

    #2
    Doh, there was a continue handler up at the top of the procedure which set endCursor to -1 meaning the while loop was never entered. Yet the debugger implied that the delete statement was being run

    I hate this machine...
    Listen to my last album on Spotify

    Comment

    Working...
    X