Como eliminar o "Erro 1329: Nenhum dado obtido, selecionado ou processado"
Ao executar procedimentos armazenados que não retornam valores, os usuários podem encontrar “Erro 1329: Sem dados – zero linhas buscadas, selecionadas ou processadas”. Para resolver esse problema, siga estas etapas:
Considere o seguinte procedimento armazenado:
CREATE PROCEDURE `testing_proc`() READS SQL DATA BEGIN DECLARE done INT DEFAULT 0; DECLARE l_name VARCHAR(20); DECLARE my_cur CURSOR FOR SELECT name FROM customer_tbl; OPEN my_cur; my_cur_loop: LOOP FETCH my_cur INTO l_name; IF done = 1 THEN LEAVE my_cur_loop; END IF; INSERT INTO names_tbl VALUES(l_name); END LOOP my_cur_loop; CLOSE my_cur; END
O erro decorre do comportamento do MySQL de exibir um aviso mesmo quando ele foi tratado. Para evitar isso, inclua a seguinte linha no final do procedimento:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
Alternativamente, adicione uma instrução "fictícia" que envolva uma tabela e é executado com sucesso após o loop, por exemplo:
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
Isso limpará o aviso devido a um bug/comportamento estranho no MySQL (referenciado em http: //dev.mysql.com/doc/refman/5.5/en/show-warnings.html).
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3