none
Problemas com Procedure RRS feed

  • 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   

    quarta-feira, 15 de agosto de 2012 13:27

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
    quinta-feira, 16 de agosto de 2012 10:54
  • 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
    quinta-feira, 16 de agosto de 2012 12:19

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
    quinta-feira, 16 de agosto de 2012 10:54
  • 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
    quinta-feira, 16 de agosto de 2012 12:19
  • Valeu Logan. Achei os erros.
    terça-feira, 21 de agosto de 2012 14:38
  • Valeu Roberson. Achei os erros.
    terça-feira, 21 de agosto de 2012 14:39