Acho que não fui tão claro no título, portanto irei esmiuçar melhor aqui...
É o seguinte, quero saber se há algum jeito de pegar as linhas de uma coluna q está em VARCHAR com informações do tipo "4 PONTOS DE ILUMINAÇÃO", dessa informação pretendo retirar somente o número que em questão é o "4" e colocá-lo em outra coluna INTEGER. Há essa possibilidade? Detalhe, as vezes as informações não está seguindo um padrão de vim somente como "4 PONTOS DE ILUMINAÇÃO" às vezes vêm dados com mais informações númericas que precisa distinguir, por exemplo, a mim só interessa pegar números que vem antecedendo as palavras "PONTOS", "PTOS", "PTS", têm algum jeito de distinguir isso?
Ola amigos, uso curso a algum tempo, só que desta vez estou apanhando de algo que aparentemente e bem simples. Tenho certeza que estou esquecendo algum detalhe.
To a 2 dias me debatendo com isto.
Por isto estou pedindo ajuda.
O que pretendo fazer e criar um novo registro que mostre a evoluçao do crecimento mensal projetando o ponto de equilibrio. Para isto eu preciso pegar a soma do mês anterior e acrescentar a soma do atual.
Esta é a Procedure. Abaixo explico o quer nao esta funcionado.
DROP PROCEDURE IF EXISTS sp_Monitorado;
DELIMITER $$
CREATE PROCEDURE sp_Monitorado()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE vVlrMesAtuPrv, vVlrMesAntPrv, vVlrMesAtuRea, vVlrMesAntRea, vPrevisto, vRealizado numeric(10,2);
DECLARE vAnoAtu, vMesAtu, vOrdem, vAno, vMes INT;
DECLARE vGrupo, vSubGrupo, vPessoa, vPessoaAtu VARCHAR(100);
DECLARE cDados CURSOR FOR SELECT Ordem, Grupo, SubGrupo, Pessoa, Ano, Mes, Previsto, Realizado FROM vwresultadomonitoramento;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cDados;
read_loop: LOOP
FETCH cDados INTO vOrdem, vGrupo, vSubGrupo, vPessoa, vAno, vMes, vPrevisto, vRealizado;
IF done THEN
LEAVE read_loop;
END IF;
IF vOrdem <= 4 THEN
SET vVlrMesAtuPrv = vVlrMesAtuPrv + vPrevisto;
SET vVlrMesAtuRea = vVlrMesAtuRea + vRealizado;
INSERT INTO zzResultado VALUES (vOrdem, vGrupo, vSubGrupo, vPessoa, vAno, vMes, vPrevisto, vVlrMesAtuPrv);
END IF;
IF vOrdem = 4 THEN
SET vVlrMesAntPrv = vVlrMesAntPrv + vVlrMesAtuPrv;
SET vVlrMesAntRea = vVlrMesAntRea + vVlrMesAtuRea;
INSERT INTO zzResultado VALUES (99, vGrupo, 'PONTO DE EQUILIBRIO', vPessoa, vAno, vMes, vVlrMesAntPrv, vVlrMesAntRea);
SET vVlrMesAtuPrv = 0;
SET vVlrMesAtuPrv = 0;
END IF;
END LOOP read_loop;
CLOSE cDados;
END;
$$ DELIMITER;
Quando co cursor entra nesta condiçao abaixo ele deveria pegar o valor acumulado anterior e acrescentar as variaveis (vVlrMesAntPrv, vVlrMesAntRea). So que o valor se perde e fica tudo zerado.
Alguém pode me dizer onde estou errando.
Anexo tem um print do resultado que pretendo ter
IF vOrdem = 4 THEN
SET vVlrMesAntPrv = vVlrMesAntPrv + vVlrMesAtuPrv;
SET vVlrMesAntRea = vVlrMesAntRea + vVlrMesAtuRea;
INSERT INTO zzResultado VALUES (99, vGrupo, 'PONTO DE EQUILIBRIO', vPessoa, vAno, vMes, vVlrMesAntPrv, vVlrMesAntRea);
SET vVlrMesAtuPrv = 0;
SET vVlrMesAtuPrv = 0;
END IF;
Pessoal, como que eu crio uma rotina no MySQL para efetuar delete de registros inseridos nos últimos 30 dias, e fazer com que esse procedimento rode todos os dias automaticamente em determinado horário?
COM BASE NA TABELA HR DO ORACLE
Preciso criar uma sub-rotina (procedure) que imprima na tela o número de funcionários (employees) agrupados por departamentos (department_id). Deve-se ordenar a saída em ordem decrescente pela quantidade de departamentos. Pode-se utilizar qualquer forma de cursor para imprimir o resultado.