Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

-rafael-

stored procedure nao funciona

Recommended Posts

ola a todos

 

por que sera que essa procedure não funciona:

 

CREATE DEFINER=`usuario`@`%` PROCEDURE `Proc1`()
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE nome CHAR(145);

DECLARE cur1 CURSOR FOR SELECT nomeuser FROM user;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

OPEN cur1;

REPEAT
FETCH cur1 INTO nome;
UNTIL done END REPEAT;
CLOSE cur1;
END


 

 

CALL `Proc1`(); -- que é a procedure acima
/* 0 rows affected, 0 rows found. Duration for 1 query: 0,000 sec. */

porem

 

se fizer o select sem a procedure

 

SELECT nomeuser FROM user;
/* 0 rows affected, [b]8 rows found[/b]. Duration for 1 query: 0,000 sec. */

nenhuma msg de erro é retornada pelo mysql.

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tudo isso pra fazer um select ?

expecifique o seu real motivo .... e que você pretende fazer

 

 

exemplo de uma procedure que fiz...

 

 

CREATE DEFINER=`root`@`localhost` PROCEDURE `Cad_Carro_Cliente`(Erro INT , v_id_cli INT,v_renavam INT, v_placa VARCHAR(8), v_data_cad VARCHAR(10) )
BEGIN
 if ((v_id_cli!='') and (v_renavam!='') and (v_placa!='') and (v_data_cad!='')) then
if exists (SELECT id_cliente, renavam, placa FROM carro_cliente WHERE renavam=v_renavam or placa=v_placa) then
select 'Ja existe um CARRO cadastrado com esses dados.....' as MSG;
SET Erro=1;
  else
 insert into carro_cliente (id_cliente,renavam,placa,data_cad)
 values (v_id_cli,v_renavam,v_placa,v_data_cad);
 select 'Carro Cadastrado....' as MSG;
SET Erro=0;
   end if;
 else
 select 'Existem dados em branco....' as MSG;
  SET Erro=2;

 end if;
 SELECT Erro;
END

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola,

 

obrigado pela ajuda

 

na verdade, o select da procedure acima é apenas um exemplo.

 

o select que realmente vai ser executado é MUITO mais complexo, e deverá ser executado em diversas paginas do site.

 

o problema real é que ao executar o procedure somente com o select, na pagina php ocorre o erro 2014 commands out of sync you can't run this command now

 

depois de muita andança, descobri que TALVEZ a solução fosse usar CURSOR e FETCH na procedure.

 

mas depois de feito isso o select para de funcionar, ou melhor, a procedure não executa nada.

 

agora, por que isso? não ha mensagens de erro.

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.