2016-06-07 15 views
0

Ich habe dieses Verfahren und kann es normal ausführen, aber nicht wissen, wie man es zählt, jetzt hinter mir einen Bericht Zeile für Zeile und ich muss die Tabelle herunterladen, um rs zu zählen Linien Wie kann ich sie dazu bringen, mir einen Bericht zu bringen?Einfügen einer Zählungsprozedur in Mysql

DROP PROCEDURE IF EXISTS testlink.PR_SEL_RELAT_PRODUTIVIDADE; 
CREATE PROCEDURE testlink.`PR_SEL_RELAT_PRODUTIVIDADE`(
    idProjetoTestLink INT, 
    idPlanoTeste  INT, 
    DataReferencia VARCHAR(10), 
    idProjetoMantis INT) 
BEGIN 
     DECLARE vDataReferencia DATE; 
     DECLARE vIdQuery   char(36); 

     /* Carrega os dias Testes na tabela Tempor?ria */ 
     SELECT FN_SELECIONA_CASO_TESTES(idProjetoTestLink, idPlanoTeste) 
     INTO vIdQuery; 

     SELECT DATE(DataReferencia) 
     INTO vDataReferencia; 

SELECT a.username, 
     a.realname, 
     sum(a.falha) falha, 
     sum(a.passou) passou, 
     SUM(a.bloqueado) bloqueado, 
     sum(a.EmExecucao) EmExecucao, 
     sum(a.DefeitosFechados) DefeitosFechados, 
     sum(a.DefeitosReabertos) DefeitosReabertos 
    FROM (SELECT X.LOGIN_TESTER username, 
       X.NOME_TESTER realname, 
       CASE STATUS WHEN 'f' THEN 1 ELSE 0 END Falha, 
       CASE STATUS WHEN 'p' THEN 1 ELSE 0 END Passou, 
       CASE STATUS WHEN 'b' THEN 1 ELSE 0 END Bloqueado, 
       0 EmExecucao, 
       0 DefeitosFechados, 
       0 DefeitosReabertos 
      FROM testlink.tmp_result_report X 
     WHERE X.ID_QUERY = vIdQuery 
       AND X.DATA_EXECUCAO = vDataReferencia 
     UNION ALL 
     SELECT X.LOGIN_TESTER username, 
       X.NOME_TESTER realname, 
       0 Falha, 
       0 Passou, 
       0 Bloqueado, 
       CASE STATUS WHEN 'r' THEN 1 ELSE 0 END EmExecucao, 
       0 DefeitosFechados, 
       0 DefeitosReabertos 
      FROM testlink.tmp_result_report X 
     WHERE X.ID_QUERY = vIdQuery 
     UNION ALL 
     SELECT user.username, 
       user.realname, 
       0 Falha, 
       0 Passou, 
       0 Bloqueado, 
       0 EmExecucao, 
       CASE WHEN bug.resolution <> 30 THEN 1 ELSE 0 END 
        DefeitosFechados, 
       CASE WHEN bug.resolution = 30 THEN 1 ELSE 0 END 
        DefeitosReabertos 
      FROM mantis.mantis_bug_table bug, 
       mantis.mantis_category_table categ, 
       mantis.mantis_user_table user 
     WHERE  bug.project_id = idProjetoMantis 
       AND bug.category_id = categ.id 
       AND bug.status = 90  -- Fechado 
       AND bug.resolution <> 10 -- Aberto 
       AND date(FROM_UNIXTIME(bug.last_updated)) = vDataReferencia 
       AND bug.reporter_id = user.id) a 
    WHERE a.username IS NOT NULL 
GROUP BY a.username; 
END; 
+0

Das ist wie MySQL sieht so entfernte ich die Oracle-Tag. –

+0

Verwenden Sie die Programmiersprache, die den gespeicherten Prozess aufruft – Drew

Antwort

0

Sie müssen eine Variable und Zuwachs in jeder Zeile hinzufügen:

DROP PROCEDURE IF EXISTS testlink.PR_SEL_RELAT_PRODUTIVIDADE; 
CREATE PROCEDURE testlink.`PR_SEL_RELAT_PRODUTIVIDADE`(

    set @rowcount = 0; 

    ... 

    SELECT @rowcount:[email protected]+1 as row_counter 
     a.username, 
     a.realname, 
     sum(a.falha) falha, 
     sum(a.passou) passou, 

     ... 

END