OlafNagel
Benutzer
- Beiträge
- 10
Guten Morgen liebe Leute,
ich habe mich heute her angemeldet und hoffe das ich hier noch ein bisschen lernen kann.
folgendes Problem (DB = Maria DB auf xampp) :
ich habe eine procedure die ansich auch durchläuft und das gewünschte Ergebnis liefert, ausser bei ein paar Optionen.
Ich habe mal die betreffenden Stellen markiert. Ich habe schon viele Tests laufen lassen, Variablen getestet. Alle Eingaben sind vorhanden. Die betreffenden Selects funktionieren auch außerhalb . Aber innerhalb liefern diese Selects kein Ergebnis. Kann mir jemand einen Tipp geben?
ich habe mich heute her angemeldet und hoffe das ich hier noch ein bisschen lernen kann.
folgendes Problem (DB = Maria DB auf xampp) :
ich habe eine procedure die ansich auch durchläuft und das gewünschte Ergebnis liefert, ausser bei ein paar Optionen.
Ich habe mal die betreffenden Stellen markiert. Ich habe schon viele Tests laufen lassen, Variablen getestet. Alle Eingaben sind vorhanden. Die betreffenden Selects funktionieren auch außerhalb . Aber innerhalb liefern diese Selects kein Ergebnis. Kann mir jemand einen Tipp geben?
SQL:
CREATE DEFINER=`root`@`localhost` PROCEDURE `updateStorage`(IN item INT(10) UNSIGNED, IN reason INT(5) UNSIGNED, IN quantity NUMERIC(10,2), IN unit int(10) UNSIGNED, IN magazin INT(5) UNSIGNED, IN users INT(10) UNSIGNED)
BEGIN
/*declare used values */
DECLARE piece INT(10) DEFAULT NULL;
DECLARE itgroup INT(10) DEFAULT NULL;
DECLARE content INT(10) DEFAULT NULL;
DECLARE order_id INT(10) DEFAULT NULL;
DECLARE piecequant NUMERIC(10,2) DEFAULT NULL;
DECLARE store INT(5) DEFAULT NULL;
-- change unit between package and content, deepends input
#HIER LIEFERT DAS SELECT KEIN ERGEBNIS, AUSSERHALB JA
SELECT `cont` INTO content FROM `it` WHERE `id` = item; # contents of parts packaging
#HIER LIEFERT DAS SELECT KEIN ERGEBNIS, AUSSERHALB JA
SELECT (CASE WHEN `itgroup` = 1000 then
`pack`
ELSE
`unit` END) into piece FROM `it` WHERE `id` = item; # look for storage unit
-- If the input is not like storage unit
IF unit != piece
THEN
set piecequant = quantity * content;
else
set piecequant = quantity;
END IF;
-- if input magazin is empty
IF magazin = 0 THEN
#HIER LIEFERT DAS SELECT KEIN ERGEBNIS, AUSSERHALB JA
SELECT `magazin` INTO store FROM `stock` WHERE `it` = item;
ELSE
set store = magazin;
END IF;
-- when input is goods receipt --
IF reason = 2 THEN
-- CHECK IF ORDER EXISTS
select `po` into order_id FROM `pohis` where `it` = item AND `stat` = 1 ORDER BY `id` DESC LIMIT 1;
Update `stock` SET
`stand` = `stand` + `piecequant`,
`pUp` = users
WHERE `it` = item;
-- loge the process in the order history table
IF order_id != NULL OR order_id !='' THEN
UPDATE `pohis`
LEFT JOIN `stock` ON `stock`.`it` = `pohis`.`it`
SET
`pohis`.`pack` = unit ,
`pohis`.`deliv` = curdate(),
`pohis`.`quantdel` = quantity,
`pohis`.`po` = order_id,
`pohis`.`pUp` = users,
`stock`.`stat` = 0,
`pohis`.`stat` = 0
WHERE `pohis`.`po` = order_id AND `pohis`.`it` = item;
ELSE
INSERT INTO `pohis` (`it`, `pack`, `deliv`, `quantdel`, `po`, `pIn`) VALUES (item, unit, curdate(), quantity, order_id, users);
END IF;
-- correction for inventory entries
ELSEIF reason = 3 THEN
UPDATE `stock` set `stand` = piecequant
WHERE `it` = item;
-- enter new existing material --
ELSEIF reason = 8 THEN
INSERT INTO `stock`( `it`, `magazin`, `stand`, `pIn`) VALUES (item , magazin, piecequant, users);
ELSEIF reason = 4 OR reason = 5 OR reason = 6 OR reason = 9 THEN
UPDATE `stock`
SET `stand` = `stand` - piecequant,
`pUp`= users
WHERE `it`= item;
ELSEIF reason = 10 THEN
INSERT INTO `po`( `pIn` ) VALUES (users);
INSERT INTO `pohis` (it, pack, quant, po,stat, pIn) VALUES (item, piece, quantity, last_insert_id(),1, users);
UPDATE stock SET stat = 1 WHERE it= item;
END IF;# end if reason is income
-- log in statistics
INSERT INTO `stati`( `reason`, `q`, `it`, `magazin`, `cos`, `po`) VALUES ( reason,piecequant,item, store, users, order_id);
END