"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como suprimir “Erro 1329: Sem dados” em procedimentos armazenados que não retornam dados?

Como suprimir “Erro 1329: Sem dados” em procedimentos armazenados que não retornam dados?

Publicado em 2024-11-02
Navegar:403

How to Suppress \

Superando o dilema do "Erro 1329: Sem dados"

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.

Tutorial mais recente Mais>

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