none
Problema na criação de Stored RRS feed

  • Pergunta

  • Oi pessoal.

     

    Há um tempo atrás fiz uma Stored Procedure para pegar dados para um relatório. Nessa semana algumas coisas mudaram na empresa e o servidor foi para outro estado. Os encarregados pelo banco fizeram a implantação, mas as storeds eles não colocaram.

     

    O problema é o seguinte, no nosso banco a stored compila, roda, funciona que é uma beleza. Mas quando pego o código e tento compilar no outro dá erro de sintaxe. Ai me pergunto, como seria possível dar erro de sintaxe somente ao mudar de servidor?

     

    Colocarei o código da stored e também vou apontar onde o erro ocorre.

     


    ALTER procedure [dbo].[sp_relatorioProducao]

     

    @DATA_INI AS DATETIME,

    @DATA_FIM AS DATETIME

     

    AS

     

    DECLARE @ID_SERVICO AS INT

    DECLARE @DESCRICAO AS VARCHAR(30)

    DECLARE @A_ENVIAR AS INT

    DECLARE @ENVIADO AS INT

    DECLARE @LEIDO AS INT

    DECLARE @EQUIPO_OK AS INT

    DECLARE @DESPLAZAMIENTO AS INT

    DECLARE @INICIO_TRABAJO AS INT

    DECLARE @SUSPENSION AS INT

    DECLARE @REINICIO_TRABAJOS AS INT

    DECLARE @CONCLUSION AS INT

    DECLARE @ACEITACAO_CLIENTE AS INT

    DECLARE @MIN_DATE AS DATETIME

    DECLARE @MAX_DATE AS DATETIME

    DECLARE @SUM_SERVICOS AS INT

    DECLARE @CUR AS CURSOR

     

    CREATE TABLE #RELATORIO

    (

       tb_servico_id int,

       servico varchar(30),

       min_date varchar(19), --datetime,

       max_date varchar(19), --datetime,

       a_enviar int,

       enviado int,

       leido int,

       equipo_ok int,

       desplazamiento int,

       inicio_trabajo int,

       suspension int,

       reinicio_trabajos int,

       conclusion int,

       aceitacao_cliente int,

       total_servicos int

    )

     

    SET @CUR = CURSOR FOR (select tb.tb_servico_id, s.descricao as servico, @DATA_INI AS inicio, @DATA_FIM as final,

                                                           count(tb.enviar) as a_enviar,

                                                           count(tb.enviado) as enviado,

                                                           count(tb.leído) as leido,

                                                           count(tb.equipo_ok) as equipo_ok,

                                                           count(tb.desplazamiento) as desplazamiento,

                                                           count(tb.inicio_trabajo) as inicio_trabajo,

                                                           count(tb.suspensión) as suspension,

                                                           count(tb.reinicio_trabalhos) as reinicio_trabajos,

                                                           count(tb.conclusión) as conclusion,

                                                           count(tb.aceitacao_cliente) as aceitacao_cliente

                                                 from tb_servicos s,

                                                           (select tb_servico_id, dt_inicio,

                                                                      [1] enviar,

                                                                      [2] enviado,

                                                                      [3] leído,

                                                                      [4] equipo_ok,

                                                                      [5] desplazamiento,

                                                                      Devil inicio_trabajo,

                                                                      [7] suspensión,

                                                                      Music reinicio_trabalhos,

                                                                      [9] conclusión,

                                                                      [10] aceitacao_cliente

                                                           from tb_solicitacao

                                                          

                                                           /* Erro na linha abaixo Incorrect sintax near '(' */                                                      

                                                           pivot (sum(tb_status_id) for tb_status_id in ([1],[2],[3],[4],[5],Devil,[7],Music,[9],[10])) pvt

     

                                                           where dt_inicio between @DATA_INI and @DATA_FIM) tb

                                                 where tb.tb_servico_id = s.id

                                                 group by tb.tb_servico_id, s.descricao)

    OPEN @CUR

     

    (....... resto do código .......)

     

    SET @CUR = CURSOR FOR SELECT SUM([1]) AS F1, SUM([2]), SUM([3]), SUM([4]), SUM([5]), SUM(Devil), SUM([7]), SUM(Music), SUM([9]), SUM([10])

    FROM tb_solicitacao

     

    /* Em outro ponto da stored procedure Incorrect sintax near '(' */

    PIVOT(COUNT(tb_status_id) FOR tb_status_id IN ([1], [2], [3], [4], [5], Devil, [7], Music, [9], [10])) AS p

     

    WHERE dt_inicio between @DATA_INI and @DATA_FIM

    sexta-feira, 13 de julho de 2007 12:18

Respostas

  •  

    Olá Israel,

     

    Por acaso o servidor onde está dando o erro é um SQL 2000?? A instrução PIVOT é do 2005! Verifique isso e retorne.

     

     

    Abraço

    sexta-feira, 13 de julho de 2007 12:37

Todas as Respostas

  •  

    Olá Israel,

     

    Por acaso o servidor onde está dando o erro é um SQL 2000?? A instrução PIVOT é do 2005! Verifique isso e retorne.

     

     

    Abraço

    sexta-feira, 13 de julho de 2007 12:37
  • Alexandre,

     

    Eu estava olhando aqui e percebi que o pivot não mudou de cor.

    Vou dar uma ligada para os encarregados, pois as informações que eu recebi é que o banco era 2005 mesmo.

    Vou verificar isso.

     

    Abraço.

    sexta-feira, 13 de julho de 2007 12:40
  • Alexandre,

     

    Obrigado por me atentar. Eles me passaram a informação errada, é o 2000 mesmo. Se não tivesse me atentado a essa possibilidade talvez eu ficasse mais um bom tempo tentando descobrir.

     

    Agora voltarei ao bom e velho cursor para substituir o pivot... hehehe...

     

    Valeu cara.

    sexta-feira, 13 de julho de 2007 12:47
  •  

    É... pequena falha de comunicação...

     

    Bom, qualquer coisa estamos aqui.

     

     

    Abraço

    sexta-feira, 13 de julho de 2007 13:01