Ir para conteúdo

Arquivado

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

Boca

Create procedure

Recommended Posts

Pessoal preciso fazer a seguinte p mas esta apresentando erro

A logica é aseguinte

Verificar a tabela TBA

se o status XX

então atualiza a tabela TBB conforme o ID da tabela TBA

 

CREATE PROCEDURE Ajuste (IN dados TEXT)
BEGIN
 IF(SELECT  COD into ID FROM TBA WHERE DADO=dados)
THEN
 UPDATE TBB SET status=2 Where ID=COD;
END IF;
END;
Execute

CALL Ajuste('XX');

Compartilhar este post


Link para o post
Compartilhar em outros sites

no mysql vc nao precisa declarar as variaveis, que nem ali no 'INTO ID'

mas se vc quiser utilizar ela, vc precisa usar @ID, nao tenho certeza se esse é o erro, mas tenta assim

 

 

CREATE PROCEDURE Ajuste (IN dados TEXT) 
BEGIN 
 IF(SELECT COD into ID FROM TBA WHERE DADO=@dados) 
THEN 
 UPDATE TBB SET status=2 Where @ID=COD; 
END IF; 
END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, me equivoquei um pouco xD.

essa aqui funciona, vc só pecisa ajustar ela

 

CREATE PROCEDURE pcr_atualiza_saldoSMS(IN saldo INT, IN clientesistema INT)
BEGIN
    SET @sql_text:=CONCAT("UPDATE clientessistemas SET saldo=",saldo," WHERE id=",clientesistema);
    PREPARE stmt FROM @sql_text;
    EXECUTE stmt;
END

os parametros que vem la da procedure n precisam de @, mas vc precisa montar a query como acima ou setar uma variavel para receber ela, o codigo acima poderia ser escrito da seguinte forma:

 

CREATE PROCEDURE pcr_atualiza_saldoSMS(IN saldo INT, IN clientesistema INT)
BEGIN
    SET @s = saldo;
    SET @c = clientesistema;
    UPDATE clientessistemas SET saldo=@s WHERE id=@c;
END

No seu caso, eu n sei o que o if esta retornando, talvez vc possa debugar ele depois, ficaria algo assim:

 

CREATE PROCEDURE Ajuste (IN dados TEXT) 
BEGIN 
SET @d = dados;
IF(SELECT COD into ID FROM TBA WHERE DADO=@d) 
THEN 
    UPDATE TBB SET status=2 Where @ID=COD; 
END IF; 
END;

o @id a gente pode usar ele direto pq o into ID ja faz isso

 

EDIT: talvez vc precise de um LIMIT no select

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.