Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
ХРАНИМЫЕ ПРОЦЕДУМЫ В MySQL 5.0.15 (Алексей) 11/11/2005 - 13:24:25
      Re: ХРАНИМЫЕ ПРОЦЕДУМЫ В MySQL 5.0.15 (Dinky) 11/11/2005 - 19:12:51

> Original message text:
> From: Алексей - 11/11/2005 - 13:24:25
> Subject:ХРАНИМЫЕ ПРОЦЕДУМЫ В MySQL 5.0.15
> -----------------
> Какая то фигня творится, процедура работает, напрмер такая:
> CREATE PROCEDURE `sklad_spis`(_nakl_id_ INTEGER(11))
> NOT DETERMINISTIC
> SQL SECURITY DEFINER
> COMMENT 'Ôóíêöèÿ ïðîèçâîäèò ñïèñàíèå íàêëàäíîé.'
> BEGIN
> DECLARE done INT DEFAULT 0;
>
> DECLARE existId INT;
>
> DECLARE artikul_id INT;
> DECLARE section_id INT;
>
> DECLARE rashod FLOAT DEFAULT 0;
> DECLARE c_rashod INT DEFAULT 0;
> DECLARE prihod FLOAT DEFAULT 0;
> DECLARE c_prihod INT DEFAULT 0;
> DECLARE total FLOAT SIGNED DEFAULT 0;
>
> DECLARE artikul CURSOR FOR
> SELECT dni.artikul_id, l.section
> FROM docs_nakls_includes dni, list l
> WHERE dni.nakl_id = _nakl_id_ AND l.id = dni.artikul_id;
>
> DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
>
> OPEN artikul;
> REPEAT
> FETCH artikul INTO artikul_id, section_id;
>
> # Ïîëó÷àþ ÐÀÑÕÎÄ ïî ïîçèöèè
> SELECT COUNT(*), SUM(dni.position) INTO c_rashod, rashod
> FROM docs_nakls dn, docs_nakls_includes dni
> WHERE dn.stage = 'S'
> AND dni.nakl_id = dn.id
> AND dni.artikul_id = artikul_id
> AND dn.type = 'R';
>
> # Ïîëó÷àþ ÏÐÈÕÎÄ ïî ïîçèöèè
> SELECT COUNT(*), SUM(dni.position) INTO c_prihod, prihod
> FROM docs_nakls dn, docs_nakls_includes dni
> WHERE dn.stage = 'S'
> AND dni.nakl_id = dn.id
> AND dni.artikul_id = artikul_id
> AND dn.type = 'P';
>
> IF c_rashod = 0 THEN
> SET rashod = 0;
> END IF;
>
> IF c_prihod = 0 THEN
> SET prihod = 0;
> END IF;
>
> # Ðàñ÷èòûâàþ îñòàòîê
> SET total = prihod - rashod;
>
> # Ïðîâåðÿþ åñòü ëè çàïÿñü â òàâëèöå ïðåäâàðèòåëüíîãî ðàñ÷åòà
> SELECT COUNT(*) INTO existId
> FROM pre_calculation
> WHERE artikul = artikul_id;
>
> IF existId > 0 THEN
>
> # Îáíîâëÿþ çíà÷åíèå ïîçèöèè (êîë-âî)
> UPDATE pre_calculation
> SET `value` = total
> WHERE id = artikul_id;
> ELSE
> # Äîáàâëÿþ íîâóþ çàïèñü
> INSERT INTO pre_calculation
> ( `section`, `artikul`, `value` )
> VALUES
> ( `section_id`, `artikul_id`, total );
> END IF;
>
> UNTIL done END REPEAT;
> CLOSE artikul;
> END;
>
> Но если я хочу сделать UPDATE или INSERT происходит ошибка, может запрос надо не просто писать а используя какой-то оперетор, хотя когда я делаю UPDATE или INSERT в цикле, то все работает отлично!
>


From: Dinky - 11/11/2005 - 19:12:51
Subject:ХРАНИМЫЕ ПРОЦЕДУМЫ В MySQL 5.0.15
-----------------
читаем красный текст: " Также, старайтесь наиболее подробно указывать свою ситуацию .. текст возникающих ошибок" - какая ошибка происходит? при создании или при выполнении? update вроде выглядит нормально, а вот insert какой-то странный:
INSERT INTO pre_calculation
( `section`, `artikul`, `value` ) VALUES ( `section_id`, `artikul_id`, total );
что такое `section_id`, `artikul_id` ?

--
Dmitry



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
25028



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |