Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Erro no procedure


Diogo de Freitas

Pergunta

Olá pessoal, estou tendo um problema q não estou entendo. Eu fiz um procedure bem simples:

CREATE PROCEDURE `test`.`sp_tes`()

BEGIN

SELECT * FROM nova;

END

Quando eu coloco um comando INSERT ele funciona perfeitamente, mas qd coloco qualquer comando SELECT ela da uma erro:

Erro:

consulta SQL:

SELECT DATABASE( ) AS 'db';

Mensagens do MySQL : Documentação

#2014 - Commands out of sync; you can't run this command now

Não sei porque ele da um erro assim, este procedimento eu criei somente como teste para um procedimento q vou fazer. Ahh e já testei a sql do Select fora do procedure e funcionou perfeitamente.

Já tentei de tudo, coloquei no sql ate assim SELECT nome_r AS nome FROM nova; e da o mesmo erro. Alguém sabe o que este erro significa e como posso solucionar meu problema.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'Diogo de Freitas'

A tradução ds linha de erro, para aqueles que não sabem inglês, é:

#2014 - Commands out of sync; you can't run this command now

"Comando fora de sincronia; Você não pode executar este comando agora."

Este erro acontece porque você está deixando uma área de memória em aberto.

Você criou a procedure, o que fez com que o MySQL reservasse espaço de memória para o código a ser executado. Dentro do código você executou um select, cujo o retorno é sempre uma tabela temporária (O resultado de uma select é sempre uma tabela). Esta tabela ficou aberta e a procedure encerrou. Isto causou uma falha de sincronia.

Dentro de uma procedure procure usar os comandos FETCH e CURSOR para controlar o resultado de um select.

CURSOR serve para dar um nome interno tabela que será o resultado do select e deve ser usado para abrir, fechar e ponterar o select em um registro.

FETCH é usado para ponterar (ler) um registro de cada vez.

Você também pode usar o select retornando diretamente para uma variável, tal como abaixo:

SET minhavariavel = SELECT DATABASE( );

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...