Usuário com melhor resposta
Enviar email com resultado de uma query

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 = 'SELECTTUR.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 TipoTurmaFROM GVCollege_Oficial.dbo.ACD_TURMA TURINNER 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.CODIGOSALAOUTER APPLY(SELECT COUNT(*) as QTD FROM GVCollege_Oficial.dbo.ACD_ENTURMACAO
WHERE CODIGOTURMA = TUR.CODIGOTURMA) TAWHERE TUR.TIPO = 'D'
AND TUR.MODALIDADETURMA IS NULL
AND TUR.ANOINICIO >= 2016
AND TUR.SEMESTREINICIO >= 1' ,
@subject = 'Relatorio';
GOAguardo retorno,
Grato
Cláudio Bruno
Bruno Avanso
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
- Editado Bruno Avanso segunda-feira, 26 de dezembro de 2016 20:23
- Marcado como Resposta Robson William Silva terça-feira, 27 de dezembro de 2016 11:01
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
-
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
-
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
- Editado Bruno Avanso segunda-feira, 26 de dezembro de 2016 20:23
- Marcado como Resposta Robson William Silva terça-feira, 27 de dezembro de 2016 11:01