0
그래서, 그 날 미친 makeing되고, 여기에 문제에 직면하고있다MySQL의 절차
,이 바보 같은 오류라고 생각합니다, 그래서 MySQL을하지만하지의 초보자 아니다 내 생각처럼 일하고있어.
ERROR 1064 (42000) : : 시도 후
내가이 에로있어 MySQL의이 한 Statment를 배포하는 당신은 당신의 SQL 구문에 오류가 있습니다; 근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 라인 여기에 26
에서 ' validade를 SELECT를 들어, 을 estoque 커서를 선언하는 것은'내 SP
DROP PROCEDURE IF EXISTS SP_SEPARA_MATERIAL;
DELIMITER $$
CREATE PROCEDURE SP_SEPARA_MATERIAL(IN MovimentoItemPedidoID INT(11))
BEGIN
DECLARE EMPRESA_ID int;
DECLARE MOVIMENTO_ID int;
DECLARE ARMAZEM_ID int;
DECLARE CLIENTE_ID int;
DECLARE FLUXO_LOGISTICO_ID int;
DECLARE PRODUTO_ID int;
DECLARE VOLUME_ID int;
DECLARE VALIDADE date;
DECLARE LOTE int;
DECLARE NOTA int;
DECLARE PRECO double;
DECLARE QTD_BOM double;
DECLARE QTD_RUIM double;
DECLARE ESTOQUE_BOM double;
DECLARE ESTOQUE_RUIM double;
DECLARE RET_BOM double;
DECLARE RET_RUIM double;
DECLARE finished INTEGER DEFAULT 0;
-- Catch head data of move
SELECT movimento_id, fluxo_logistico_id, produto_id, quantidade_bom, quantidade_ruim INTO MOVIMENTO_ID, FLUXO_LOGISTICO_ID, PRODUTO_ID, QTD_BOM, QTD_RUIM FROM movimento_itens_pedido WHERE id = MovimentoItemPedidoID;
SELECT empresa_id, cliente_id, armazem_id INTO EMPRESA_ID, CLIENTE_ID, ARMAZEM_ID FROM movimento WHERE id = MOVIMENTO_ID;
DEClARE estoque CURSOR FOR
SELECT
validade,
lote_numero,
nota_numero,
preco_unitario,
volume_id,
quantidade_bom,
quantidade_ruim
FROM
estoque_enderecado_reserva_picking
WHERE
empresa_id = EMPRESA_ID AND
armazem_id = ARMAZEM_ID AND
cliente_id = CLIENTE_ID AND
produto_id = PRODUTO_ID AND
(quantidade_bom>=0 OR quantidade_ruim>=0);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;
OPEN estoque;
loop_separacao: LOOP
FETCH estoque INTO
VALIDADE,
LOTE,
NOTA,
PRECO,
VOLUME_ID,
ESTOQUE_BOM,
ESTOQUE_RUIM;
IF finished = 1 THEN
LEAVE loop_separacao;
END IF;
IF QTD_BOM>0 AND ESTOQUE_BOM>0 THEN
SET RET_BOM = 0;
IF ESTOQUE_BOM>=QTD_BOM THEN
SET RET_BOM = QTD_BOM;
ELSE
SET RET_BOM = ESTOQUE_BOM;
END IF;
END IF;
IF QTD_RUIM>0 AND ESTOQUE_RUIM>0 THEN
SET RET_RUIM = 0;
IF ESTOQUE_RUIM>=QTD_RUIM THEN
SET RET_RUIM = QTD_RUIM;
ELSE
SET RET_RUIM = ESTOQUE_RUIM;
END IF;
END IF;
IF RET_BOM>0 OR RET_RUIM>0 THEN
INSERT INTO movimento_picking_volume_itens (movimento_id,armazem_id,cliente_id,fluxo_logistico_id,produto_id,quantidade_bom,quantidade_ruim,validade,lote_numero,nota_numero,preco_unitario,volume_id)
VALUES (MOVIMENTO_ID,ARMAZEM_ID,CLIENTE_ID,FLUXO_LOGISTICO_ID,PRODUTO_ID,RET_BOM,RET_RUIM,VALIDADE,LOTE,NOTA,PRECO,VOLUME_ID);
SET QTD_BOM = (QTD_BOM - RET_BOM);
SET QTD_RUIM = (QTD_RUIM - RET_RUIM);
END IF;
IF QTD_BOM=0 AND QTD_RUIM=0 THEN
SET finished = 1;
LEAVE loop_separacao;
END IF;
END LOOP loop_separacao;
CLOSE estoque;
END $$
DELIMITER ;
감사 남자! 이것은 매력처럼 작동했습니다! –