Usuário com melhor resposta
Problemas com Procedure

Pergunta
-
Criei uma procedure sem erros, mas ao executá-la recebo os erros:
Msg 102, Level 15, State 1, Line 18
Incorrect syntax near '('.
Msg 102, Level 15, State 1, Line 18
Incorrect syntax near '('.
Msg 102, Level 15, State 1, Line 18
Incorrect syntax near 'ALUNOS_INI'.
Msg 102, Level 15, State 1, Line 18
Incorrect syntax near 'ALUNOS_ATUAL'.Onde estou errando?
create procedure [dbo].[Acompanhamento_cursos]
(@banco varchar (100))
as
begin
declare @caminho varchar(100)
set @caminho = @banco +'.' + 'dbo.'
Exec (
'select distinct
tipos.descricao Tipo,
turma_seq.num_sequencia,
cursos.descricao,
turma_seq.dt_ini_curso,
turma_seq.dt_fim_curso,
sum(turmas.valor) [Total Curso],
Andamento_curso.TURMA_INI,
Andamento_curso.INI,
Andamento_curso.TURMA_ATUAL,
Andamento_curso.ATUAL,
round((Andamento_curso.INI * 0.72),0) Qtde_Corte,
(case when (Andamento_curso.INI * 0.72) <= Andamento_curso.ATUAL
then 5
else 0
end
)Vagas_curso
FROM '+ @caminho + 'AAAA turma_seq '+
' inner join ' + @caminho + 'BBBB turmas on (turma_seq.cd_turma_seq=turmas.cd_turmaseq)'+
' inner join ' + @caminho + 'CCCC cursos On (cursos.codigo=turma_seq.cd_curso)'+
' inner join ' + @caminho + 'DDDD matriculas on (matriculas.codturma=turmas.codigo and cursos.codigo=matriculas.codcurso)'+
' inner join ' + @caminho + 'EEEE origens on (matriculas.codorigem=origens.codigo)'+
' inner join ' + @caminho + 'FFFF tipos on (tipos.codigo=cursos.natureza)'+
' inner join ' + @caminho + '(select distinct cd_turmaseq,turma_ini,' +
'alunos_ini.ini,'+
'Turma_atual,'+
'alunos_atual.atual'+
' from ( select CD_TURMASEQ,MIN(CODIGO)TURMA_INI,MAX(CODIGO)TURMA_ATUAL'+
' from ' + @caminho + 'BBBB'+
' where DATAini <=getdate()'+
' GROUP BY CD_TURMASEQ)codigo_turma'+
' INNER JOIN ' + @caminho + 'DDDD ON (DDDD.CODTURMA=codigo_turma.turma_ini or DDDD.CODTURMA=codigo_turma.turma_atual)'+
' inner JOIN ' + @caminho + '( SELECT CODCURSO,CODTURMA,COUNT(*)INI' +
' FROM ' + @caminho + 'DDDD '+
' GROUP BY CODCURSO,CODTURMA) ALUNOS_INI ON (ALUNOS_INI.CODTURMA=codigo_turma.TURMA_INI)'+
' inner JOIN' + @caminho + '( SELECT CODCURSO,CODTURMA,COUNT(*)ATUAL '+
' FROM ' + @caminho + 'DDDD '+
' WHERE SITUACAO=''c'''+
' GROUP BY CODCURSO,CODTURMA) ALUNOS_ATUAL ON (ALUNOS_ATUAL.CODTURMA=codigo_turma.turma_atual))Andamento_curso'+
'on (andamento_curso.cd_turmaseq=turmas.cd_turmaseq)'+
'where cursos.natureza in (10000002,10000003,10000004) and '+
' matriculas.tipomatri=''M'''+
' and dt_fim_curso >= getdate() and dt_ini_curso <= getdate() -210'+
' and turmas.status <> ''3'''+
'group by tipos.descricao,'+
' turma_seq.num_sequencia,'+
' cursos.descricao,'+
' turma_seq.dt_ini_curso,'+
' turma_seq.dt_fim_curso,'+
' Andamento_curso.TURMA_INI,'+
' Andamento_curso.INI,'+
' Andamento_curso.TURMA_ATUAL,'+
' Andamento_curso.ATUAL'
)
end
go
Respostas
-
Mellou,
Dê um print nessa consulta concatenada para ver onde estão os erros. Apenas substitua o exec pelo print, tire os parênteses referentes ao exec e dê um valor à variável bancos.
Pelo que pude notar, existem alguns erros por falta de espaço ao fechar a aspas simples, por exemplo, na subquery da tabela andamento_curso acabaria ficando ".... andamento_cursoon ...."
Acredito que isso seja a causa principal dos erros.
Espero ter ajudado.
[]'s
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 17 de agosto de 2012 18:46
- Marcado como Resposta Mellolu terça-feira, 21 de agosto de 2012 14:39
-
Mellolu...
Execute um print na consulta.
É muito fácil deixar passar algum espaço sobrando ou não fechar alguma aspas.
Certamente você encontrará o erro.
Espero ter lhe ajudado
Abraço !
Não esqueça de marcar o post como útil caso tenha te ajudado.
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 17 de agosto de 2012 18:46
- Marcado como Resposta Mellolu terça-feira, 21 de agosto de 2012 14:39
Todas as Respostas
-
Mellou,
Dê um print nessa consulta concatenada para ver onde estão os erros. Apenas substitua o exec pelo print, tire os parênteses referentes ao exec e dê um valor à variável bancos.
Pelo que pude notar, existem alguns erros por falta de espaço ao fechar a aspas simples, por exemplo, na subquery da tabela andamento_curso acabaria ficando ".... andamento_cursoon ...."
Acredito que isso seja a causa principal dos erros.
Espero ter ajudado.
[]'s
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 17 de agosto de 2012 18:46
- Marcado como Resposta Mellolu terça-feira, 21 de agosto de 2012 14:39
-
Mellolu...
Execute um print na consulta.
É muito fácil deixar passar algum espaço sobrando ou não fechar alguma aspas.
Certamente você encontrará o erro.
Espero ter lhe ajudado
Abraço !
Não esqueça de marcar o post como útil caso tenha te ajudado.
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 17 de agosto de 2012 18:46
- Marcado como Resposta Mellolu terça-feira, 21 de agosto de 2012 14:39
-
-