Ir para conteúdo

POWERED BY:

Arquivado

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

MARCOSOFTHARD

Problema do Procedure

Recommended Posts

Veja a procedure abaixo, ela dar erro ao tentar rodar no phpmysql

 

Erro

consulta SQL:

/*procedure estatística*//* DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_registra_estatistica` $$*/ CREATE PROCEDURE  `sp_registra_estatistica` ( IN var_imei VARCHAR( 15 ) ) BEGIN DECLARE hora TINYINT;


Mensagens do MySQL : 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 

 

 

Procedure:

/*procedure estatística*/
/*
DELIMITER $$

DROP PROCEDURE IF EXISTS `sp_registra_estatistica` $$*/
CREATE PROCEDURE `sp_registra_estatistica`(IN var_imei VARCHAR(15))
BEGIN
               DECLARE hora TINYINT;

               DECLARE excecao CHAR(1) DEFAULT 0;
               DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET excecao = 1;

               /*Estatistica: quantidade total*/

               INSERT INTO est_quantidade_coordenadas (imei, data, quantidade) VALUES (var_imei, CURDATE(), 1);

               IF excecao = 1 THEN
                 UPDATE est_quantidade_coordenadas SET quantidade = quantidade + 1 WHERE imei = var_imei AND data = CURDATE();
               END IF;

               SET excecao = 0;

               /*Estatistica: quantidade por hora*/
               INSERT INTO est_quantidade_hora (imei, data) VALUES (var_imei, CURDATE());

               IF excecao = 1 THEN
                 SELECT HOUR(CURTIME()) INTO hora FROM dual;

                 CASE
                   WHEN hora = 0 THEN
                     UPDATE est_quantidade_hora SET 0h = 0h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 1 THEN
                     UPDATE est_quantidade_hora SET 1h = 1h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 2 THEN
                     UPDATE est_quantidade_hora SET 2h = 2h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 3 THEN
                     UPDATE est_quantidade_hora SET 3h = 3h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 4 THEN
                     UPDATE est_quantidade_hora SET 4h = 4h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 5 THEN
                     UPDATE est_quantidade_hora SET 5h = 5h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 6 THEN
                     UPDATE est_quantidade_hora SET 6h = 6h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 7 THEN
                     UPDATE est_quantidade_hora SET 7h = 7h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 8 THEN
                     UPDATE est_quantidade_hora SET 8h = 8h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 9 THEN
                     UPDATE est_quantidade_hora SET 9h = 9h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 10 THEN
                     UPDATE est_quantidade_hora SET 10h = 10h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 11 THEN
                     UPDATE est_quantidade_hora SET 11h = 11h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 12 THEN
                     UPDATE est_quantidade_hora SET 12h = 12h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 13 THEN
                     UPDATE est_quantidade_hora SET 13h = 13h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 14 THEN
                     UPDATE est_quantidade_hora SET 14h = 14h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 15 THEN
                     UPDATE est_quantidade_hora SET 15h = 15h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 16 THEN
                     UPDATE est_quantidade_hora SET 16h = 16h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 17 THEN
                     UPDATE est_quantidade_hora SET 17h = 17h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 18 THEN
                     UPDATE est_quantidade_hora SET 18h = 18h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 19 THEN
                     UPDATE est_quantidade_hora SET 19h = 19h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 20 THEN
                     UPDATE est_quantidade_hora SET 20h = 20h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 21 THEN
                     UPDATE est_quantidade_hora SET 21h = 21h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 22 THEN
                     UPDATE est_quantidade_hora SET 22h = 22h + 1 WHERE imei = var_imei AND data = CURDATE();

                   WHEN hora = 23 THEN
                     UPDATE est_quantidade_hora SET 23h = 23h + 1 WHERE imei = var_imei AND data = CURDATE();

                 END CASE;

               END IF;
END; /*$$

DELIMITER ;*/


---------------------

/*trigger de liberacao e estatistica*/


/*DELIMITER |*/

CREATE TRIGGER `tr_checaLiberacaoIMEI` BEFORE INSERT ON `gprmc` FOR EACH ROW
BEGIN

 call sp_registra_estatistica(NEW.imei);

 UPDATE bem SET modo_operacao = 'GPRS' WHERE imei = NEW.imei and modo_operacao = 'SMS';

END;

/*|*/

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.