none
Enviar email com resultado de uma query RRS feed

  • Pergunta

  • Prezados,

         Tentando gerar uma query para enviar o resultado de uma query porém esta dando erro em uma linha a query está abaixo,

    O Erro ocorre em " WHERE TUR.TIPO = 'D' "

    O resultado erro é o seguinte

    Msg 102, Level 15, State 1, Line 31
    Incorrect syntax near 'D'.

    Se retiro o TUR.TIPO = 'D' funciona perfeitamente o envio de email com o resultado porém com não, se executo a query somente com o select no smss funciona normal porém quando adiciono os parâmetros da procedure ocorre este erro. Como corrigir isto ?

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'SUPORTE',
        @recipients = 'claudio.bruno@saolucas.edu.br',
        @query = 'SELECT
    TUR.DESCRICAO             as Turma,
    TUR.ANOINICIO             as Ano,
    TUR.SEMESTREINICIO            as Semestre,
    CIC.DESCRICAO             as Ciclo,
    CIC.NUMEROCICLO             as CicloNumero,
    CUR.DESCRICAO             as Curso,
    TUR.CODIGOUNIDADE            as CodUnidade,
    TUR.CODIGOEMPRESA            as CodEmpresa,
    TUR.TAMANHOTURMAMAXIMO           as Vagas,
    TA.QTD               as Matriculados,
    DSC.DESCRICAO             as Disciplina,
    SAL.DESCRICAO             as Sala,
    TUR.MODALIDADETURMA            as Modalidade,
    TUR.TIPO     as TipoTurma
    FROM GVCollege_Oficial.dbo.ACD_TURMA TUR
    INNER JOIN GVCollege_Oficial.dbo.ACD_CICLO CIC ON CIC.CODIGOCICLO = TUR.CODIGOCICLO
    INNER JOIN GVCollege_Oficial.dbo.ACD_CURSO CUR ON CUR.CODIGOCURSO = CIC.CODIGOCURSO
    INNER JOIN GVCollege_Oficial.dbo.SEC_DISCIPLINA DSC ON DSC.CODIGODISCIPLINA = TUR.CODIGODISCIPLINA
    LEFT JOIN GVCollege_Oficial.dbo.ACD_SALA SAL ON SAL.CODIGOSALA = TUR.CODIGOSALA
    OUTER APPLY(SELECT COUNT(*) as QTD FROM GVCollege_Oficial.dbo.ACD_ENTURMACAO
    WHERE CODIGOTURMA = TUR.CODIGOTURMA) TA

    WHERE TUR.TIPO = 'D'
     AND TUR.MODALIDADETURMA IS NULL
     AND TUR.ANOINICIO >= 2016
     AND TUR.SEMESTREINICIO >= 1' ,
        @subject = 'Relatorio';
    GO

    Aguardo retorno,

    Grato


    Cláudio Bruno


    Bruno Avanso

    segunda-feira, 26 de dezembro de 2016 18:11

Respostas

  • A solução é onde está

    WHERE TUR.TIPO = 'D'

    de ser posto

    WHERE TUR.TIPO = ' 'D' '

    Duas aspas simples e não aspa dupla

    Grato

    Cláudio Bruno


    Bruno Avanso


    segunda-feira, 26 de dezembro de 2016 20:22

Todas as Respostas

  • Tente assim:

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'SUPORTE',
        @recipients = 'claudio.bruno@saolucas.edu.br',
        @query = 'SELECT * FROM (
    SELECT
    TUR.DESCRICAO             as Turma,
    TUR.ANOINICIO             as Ano,
    TUR.SEMESTREINICIO            as Semestre,
    CIC.DESCRICAO             as Ciclo,
    CIC.NUMEROCICLO             as CicloNumero,
    CUR.DESCRICAO             as Curso,
    TUR.CODIGOUNIDADE            as CodUnidade,
    TUR.CODIGOEMPRESA            as CodEmpresa,
    TUR.TAMANHOTURMAMAXIMO           as Vagas,
    TA.QTD               as Matriculados,
    DSC.DESCRICAO             as Disciplina,
    SAL.DESCRICAO             as Sala,
    TUR.MODALIDADETURMA            as Modalidade,
    TUR.TIPO     as TipoTurma
    FROM GVCollege_Oficial.dbo.ACD_TURMA TUR
    INNER JOIN GVCollege_Oficial.dbo.ACD_CICLO CIC ON CIC.CODIGOCICLO = TUR.CODIGOCICLO
    INNER JOIN GVCollege_Oficial.dbo.ACD_CURSO CUR ON CUR.CODIGOCURSO = CIC.CODIGOCURSO
    INNER JOIN GVCollege_Oficial.dbo.SEC_DISCIPLINA DSC ON DSC.CODIGODISCIPLINA = TUR.CODIGODISCIPLINA
    LEFT JOIN GVCollege_Oficial.dbo.ACD_SALA SAL ON SAL.CODIGOSALA = TUR.CODIGOSALA
    OUTER APPLY(SELECT COUNT(*) as QTD FROM GVCollege_Oficial.dbo.ACD_ENTURMACAO 
    WHERE CODIGOTURMA = TUR.CODIGOTURMA) AS TA
    WHERE TUR.TIPO = 'D'
     AND TUR.MODALIDADETURMA IS NULL 
     AND TUR.ANOINICIO >= 2016 
     AND TUR.SEMESTREINICIO >= 1' ,
        @subject = 'Relatorio';
    GO


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    segunda-feira, 26 de dezembro de 2016 18:31
  • Prezados,

         Tentando gerar uma query para enviar o resultado de uma query porém esta dando erro em uma linha a query está abaixo,

    O Erro ocorre em " WHERE TUR.TIPO = 'D' "

    O resultado erro é o seguinte

    Msg 102, Level 15, State 1, Line 31
    Incorrect syntax near 'D'.

      
    O SQL  está reclamando da falta do apostrofe na 
    
    
    
    acredito que assim funcione
    
    EXEC msdb.dbo.sp_send_dbmail @profile_name = 'SUPORTE',
        @recipients = 'claudio.bruno@saolucas.edu.br',
        @query = 'SELECT
    TUR.DESCRICAO             as Turma,
    TUR.ANOINICIO             as Ano,
    TUR.SEMESTREINICIO            as Semestre,
    CIC.DESCRICAO             as Ciclo,
    CIC.NUMEROCICLO             as CicloNumero,
    CUR.DESCRICAO             as Curso,
    TUR.CODIGOUNIDADE            as CodUnidade,
    TUR.CODIGOEMPRESA            as CodEmpresa,
    TUR.TAMANHOTURMAMAXIMO           as Vagas,
    TA.QTD               as Matriculados,
    DSC.DESCRICAO             as Disciplina,
    SAL.DESCRICAO             as Sala,
    TUR.MODALIDADETURMA            as Modalidade,
    TUR.TIPO     as TipoTurma
    FROM GVCollege_Oficial.dbo.ACD_TURMA TUR
    INNER JOIN GVCollege_Oficial.dbo.ACD_CICLO CIC ON CIC.CODIGOCICLO = TUR.CODIGOCICLO
    INNER JOIN GVCollege_Oficial.dbo.ACD_CURSO CUR ON CUR.CODIGOCURSO = CIC.CODIGOCURSO
    INNER JOIN GVCollege_Oficial.dbo.SEC_DISCIPLINA DSC ON DSC.CODIGODISCIPLINA = TUR.CODIGODISCIPLINA
    LEFT JOIN GVCollege_Oficial.dbo.ACD_SALA SAL ON SAL.CODIGOSALA = TUR.CODIGOSALA
    OUTER APPLY(SELECT COUNT(*) as QTD FROM GVCollege_Oficial.dbo.ACD_ENTURMACAO 
    WHERE CODIGOTURMA = TUR.CODIGOTURMA) TA
    WHERE TUR.TIPO = ''D''
     AND TUR.MODALIDADETURMA IS NULL 
     AND TUR.ANOINICIO >= 2016 
     AND TUR.SEMESTREINICIO >= 1', @subject = 'Relatorio';
    GO
    
    como vc inicia a query  com  ( ' ), vc não pode ter outro dentro pois vai quebrar a string

    Wesley Neves


    • Editado Wesley Neves terça-feira, 27 de dezembro de 2016 10:42 correção
    segunda-feira, 26 de dezembro de 2016 18:36
  • A solução é onde está

    WHERE TUR.TIPO = 'D'

    de ser posto

    WHERE TUR.TIPO = ' 'D' '

    Duas aspas simples e não aspa dupla

    Grato

    Cláudio Bruno


    Bruno Avanso


    segunda-feira, 26 de dezembro de 2016 20:22