CREATE FUNCTION ze_XmlNfeProdutoList( nIdNotFis INT(11) )
RETURNS VARCHAR(10000)
BEGIN
DECLARE cXml VARCHAR(2000) DEFAULT '';
DECLARE nIdItPed, nContador INT(11) DEFAULT 0;
DECLARE nCursorEOF INT(11) DEFAULT 0;
DECLARE SP_CURSOR CURSOR FOR
SELECT IDITPED FROM JPITPED WHERE IPPEDIDO =
( SELECT NFPEDIDO FROM JPNOTFIS WHERE IDNOTFIS = nIdNotFis );
DECLARE CONTINUE HANDLER FOR NOT FOUND SET nCursorEOF = 1;
OPEN SP_CURSOR;
THIS:WHILE nCursorEof != 1 DO
FETCH SP_CURSOR INTO nIdItPed;
SET nContador := nContador + 1;
SET cXml := CONCAT( cXml, ze_XmlNfeProduto( nIdItPed, nContador ) );
END WHILE;
CLOSE SP_CURSOR;
RETURN cXml;
END
Tem apenas um produto no pedido, mas aparecem dois.
Tudo indica que é esta rotina, porque sai numerado item 1 e 2, e é aqui que numera.
Esse SELECT na base só retorna 1 produto.