Muitos desenvolvedores encontram o frustrante "Erro 1329: Sem dados - zero linhas buscadas, selecionadas ou processadas" quando executando procedimentos armazenados. No entanto, esse erro geralmente ocorre mesmo quando o procedimento funciona corretamente, levantando a questão de como suprimir essa mensagem desnecessária.
Uma solução potencial está no próprio procedimento armazenado. Por padrão, espera-se que os procedimentos armazenados retornem um conjunto de resultados. No entanto, se o procedimento realizar operações que não produzam quaisquer dados (como manipulação de dados ou atualizações de registros), ele acionará a mensagem de erro.
Para resolver isso, podemos modificar o procedimento armazenado para indicar explicitamente que ele não retorna nenhum dado. Isso pode ser conseguido adicionando a seguinte linha ao início do procedimento:
READS SQL DATA
Esta linha informa ao banco de dados que o procedimento só lerá tabelas e não retorne quaisquer linhas.
Outra abordagem envolve o tratamento da exceção NOT FOUND dentro do procedimento. Quando um cursor é usado para buscar linhas de uma tabela, ele pode encontrar um cenário em que não há mais linhas para buscar. Isso fará com que o cursor gere uma exceção NOT FOUND. Ao capturar essa exceção e definir um sinalizador, podemos evitar a mensagem de erro.
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
Ao adicionar esta linha, instruímos o banco de dados para definir o sinalizador concluído como 1 quando o cursor encontrar a exceção NOT FOUND. Este sinalizador pode então ser usado para sair do loop do cursor e concluir o procedimento sem acionar a mensagem de erro.
Finalmente, outra solução alternativa é executar uma consulta fictícia adicional que lê uma tabela e é bem-sucedida. Isso limpará o aviso no MySQL 5.5.13.
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
Seguindo essas abordagens, os desenvolvedores podem suprimir a mensagem "Erro 1329" para procedimentos armazenados que não retornam nenhum dado, garantindo uma execução mais suave sem avisos de erro desnecessários.
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