Задавайте вопросы, мы ответим
Вы не зашли.
DELIMITER $$
CREATE PROCEDURE OBOROT_SO (In NumTmc decimal(11), /* ном.номер*/
In Price float, /* учет.цена*/
In Uperiod int) /* учет.период*/
BEGIN
DECLARE is_end INT Default 0;
/* Объявляем курсор */
DECLARE cur1 CURSOR FOR SELECT * FROM TMP_table1;
/*Объявляем обработчик для ситуации, когда курсор достигает конца результирующей таблицы*/
DECLARE CONTINUE HANDLER FOR NOT FOUND SET is_end = 1;
/* 1 */
/* Создание временной таблицы1*/
/* В нее добавляем все приходы*/
CREATE TEMPORARY TABLE TMP_table1 ( DatD int, /* месяц прихода */
Kol float, /* количество */
KolMes smallint/* срок использования в мес.*/ );
/* 2 */
/* ДОБАВЛЕНИЕ ДАННЫХ из документов - требования(вед-ть выдачи хоз.инв.) */
INSERT INTO TMP_table1 VALUES (DatD,Kol,KolMes);
SELECT DOKUM.DATD,SUM(DOKUMS.KOL),DOKUMS.SROK
FROM DOKUMS LEFT OUTER JOIN DOKUM ON DOKUMS.UN = DOKUM.UN
WHERE DOKUM.VID_DOK = 17 AND DOKUMS.SROK > 12 AND DOKUMS.NUM_TMC = NumTmc AND DOKUM.DATD>=73783
GROUP BY DOKUM.DATD,DOKUMS.SROK
ORDER BY DOKUM.DATD;
/* 3 */
/* Заполнение таблицы приходов/расходов */
/* от мин.даты прихода до текущего месяца */
SELECT @DatMin = MIN(DatD) FROM TMP_table1 ;
WHILE @DatMin <= Uperiod Do
INSERT INTO TMP_table2 VALUES (DatD,Prixod,Rasxod);
SELECT @DatMin,0.00,0.00;
SELECT @DatMin = DATEDIFF('1800-12-28', ADDDATE(ADDDATE('1800-12-28', Interval 5 day), INTERVAL 1 month));
END WHILE;
/* 4 */
/* Для каждой строки прихода считаем приходы и расходы и прибавляем к месяцам */
OPEN CUR1;
LOOP
FETCH CUR1 INTO Datd1,Kol1,KolMes1;
If is_end Then
LEAVE;
else
...............
End If;
End Loop;
end$$
Не дает досрочный выход из цикла Loop. Показывает ошибку. Подскажите в чем проблема???
Неактивен
А какую ошибку то пишет?
Неактивен
У вас LEAVE без указания метки.
См пример в http://sqlinfo.ru/forum/viewtopic.php?id=1041
Неактивен