Procedure Question
I have a "quick" question about a procedure I wrote shown below. The question is..... syntacticly/logically have I botched anything up here?
-------------------------------------------------------------
DELIMITER //
DROP PROCEDURE IF EXISTS `bosscms`.`myprocedure`//
CREATE PROCEDURE `bosscms`.`myprocedure` ()
BEGIN
DECLARE A,B,C,D,E,F,G,H,I,J,K,L,M,N VARCHAR(100);
DECLARE c_main CURSOR FOR
SELECT T1.column_11, T1.column_3, T1.column_32, T1.column_35, T1.column_40, T1.column_2, T1.column_5
FROM my_in_table as T1,
(SELECT column_11, column_3, MAX(column_32) as date_max
FROM my_in_table
GROUP BY column_11, column_3
) as V1
WHERE
T1.column_11 = V1.column_11
and T1.column_3 = V1.column_3
and T1.column_32 = date_max
and T1.column_32 != " "
and T1.column_3 != " ";
DECLARE c_sub CURSOR FOR
SELECT instance_id, field_id, value FROM cf_data;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET K = "1";
OPEN c_main;
OPEN c_sub;
FETCH c_main INTO A, B, C, D, E, F, G;
REPEAT
MyLoop: LOOP
FETCH c_sub INTO H, I, J;
IF I = "3"
THEN SET N = J;
END IF;
IF I = "4"
THEN UPDATE cf_data SET value = D
WHERE instance_id = H
AND N = B
AND field_id = "4";
END IF;
IF I = "5"
THEN UPDATE cf_data SET value = E
WHERE instance_id = H
AND N = B
AND field_id = "5";
END IF;
IF K = "1"
THEN
SET K = "0";
LEAVE MyLoop;
END IF;
END LOOP MyLoop;
FETCH c_main INTO A, B, C, D, E, F, G;
UNTIL K = "1"
END REPEAT;
CLOSE c_sub;
CLOSE c_main;
END//
DELIMITER ;
Thanks
-Matt
Edited 1 time(s). Last edit at 11/01/2007 02:53PM by Matthew Fitzpatrick.