Página 1 de 1

Erro em stored procedue / cursor

Enviado: 11 Out 2021 08:10
por JoséQuintas
Estou tendo o mesmo problema em duas procedures.

Código: Selecionar todos

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.

Erro em stored procedue / cursor

Enviado: 11 Out 2021 08:16
por JoséQuintas
Acho que o WHILE não é suficiente, precisa de mais um IF apos o FETCH.
É a única possibilidade que vejo.

Erro em stored procedue / cursor

Enviado: 11 Out 2021 08:25
por JoséQuintas
É isso mesmo.
Só o WHILE...DO não é suficiente.
Mesmo com EOF(), continua usando as variáveis anteriores.

Erro em stored procedue / cursor

Enviado: 11 Out 2021 10:00
por JoséQuintas
Este erro foi as 06:20 da manhã, parou o faturamento.

E teve mais alguns erros em procedure/function.

Mas agora ok, geração de XML através de procedure/function instalada.