Eu tenho uma tabela de produtos onde tenho alguns dados. Eu preciso fazer a seguinte consulta para então alterar os registros
retornados:
1) Primeira consulta pego alguns campos para consulta no sistema A onde o campo Validacao seja = 1
2) Na segunda consulta eu pego os campos do mesmo sistema A, mas a condição é que tenha o campo Validacao != 1 e onde
alguns outros campos são iguais ao resultado da primeira consulta.
Eu preciso fazer isso, pois esse campo Validacao, indica no meu cadastro quando um produto pode ficar disponível para
uso (Validacao = 1) e quando ele está indisponível para uso (Validacao != 1).
Mas eu tenho aqui alguns funcionários que esqueceram de alterar esse campo quando cadastraram uns produtos, então tem muitos
produtos cadastrados, que podem estar disponíveis, mas que não estão. A condição para estar disponível é que o nome do
produto, a classe do produto e o grupo do produto tem que ser o mesmo de algum outro registro já validado.
Não sei se fui clara... hehehe mas vou colcar aqui as 2 procedures que criei para fazer a consulta e a alteração na base.
Procedure das consultas
DELIMITER $$
DROP PROCEDURE IF EXISTS `twoCursor` $$
CREATE PROCEDURE `twoCursor` ()
BEGIN
declare grupoprod, classeprod, idFact, idFact2, idMaster, idSlave, indexM, indexS int default 0;
declare nomeprod TEXT;
declare masterCursor cursor for Select SQL_CALC_FOUND_ROWS produto.codigo,
produto.nome_do_produto,
produto.grupo_produto, produto.classe_do_produto
from produto
where produto.sistema like 'A' and
(produto.validacao = 1);
declare slaveCursor cursor for Select SQL_CALC_FOUND_ROWS produto.codigo
from produto
where produto.sistema like 'B' and
(produto.validacao != 1 or produto.validacao is null) and
(produto.grupo_produto = grupoprod and
produto.classe_do_produto = classeprod and
produto.nome_do_produto like nomeprod);
open masterCursor;
set idMaster = (Select FOUND_ROWS());
while indexM<idMaster do
fetch masterCursor into idFact, grupoprod, classeprod, nomeprod;
open slaveCursor;
set idSlave = (Select FOUND_ROWS());
while indexS < idSlave do
fetch slaveCursor into idFact2;
set @codmat2 = idFact2;
call Proc2(@codmat2);
set indexS= indexS+1;
end while;
close slaveCursor;
set indexM = indexM + 1;
end while;
close masterCursor;
END $$
DELIMITER;
Procedure da alteração
CREATE PROCEDURE `Proc2` (codigo int)
BEGIN
UPDATE produto set produto.validacao = 1
WHERE produto.codigo = @codigo;
END
Chama procedure
call twoCursor;
Eu consegui exibir uma vez um código de um produto para ser alterado, mas mesmo assim não foi alterado o registro.
Se alguém puder me ajudar com isso.. eu fico muito grata... pois tenho um prazo curto para entrega da base pronta.. mas não
estou conseguindo visualizar porque o registro não é alterado....
Pergunta
Penny Lane
Pessoal, meu problema é o seguinte:
Eu tenho uma tabela de produtos onde tenho alguns dados. Eu preciso fazer a seguinte consulta para então alterar os registros
retornados:
1) Primeira consulta pego alguns campos para consulta no sistema A onde o campo Validacao seja = 1
2) Na segunda consulta eu pego os campos do mesmo sistema A, mas a condição é que tenha o campo Validacao != 1 e onde
alguns outros campos são iguais ao resultado da primeira consulta.
Eu preciso fazer isso, pois esse campo Validacao, indica no meu cadastro quando um produto pode ficar disponível para
uso (Validacao = 1) e quando ele está indisponível para uso (Validacao != 1).
Mas eu tenho aqui alguns funcionários que esqueceram de alterar esse campo quando cadastraram uns produtos, então tem muitos
produtos cadastrados, que podem estar disponíveis, mas que não estão. A condição para estar disponível é que o nome do
produto, a classe do produto e o grupo do produto tem que ser o mesmo de algum outro registro já validado.
Não sei se fui clara... hehehe mas vou colcar aqui as 2 procedures que criei para fazer a consulta e a alteração na base.
Procedure das consultas
Procedure da alteração Chama procedureEu consegui exibir uma vez um código de um produto para ser alterado, mas mesmo assim não foi alterado o registro.
Se alguém puder me ajudar com isso.. eu fico muito grata... pois tenho um prazo curto para entrega da base pronta.. mas não
estou conseguindo visualizar porque o registro não é alterado....
Desde já agradeço a atenção de todos.
Editado por Denis CourcyMelhorar entendimento
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados