none
Procedure erro para criar RRS feed

  • Pergunta

  • Pessoal bom dia,

    Estou com erro ao criar uma procedure, gostaria se possivel da ajuda de voces.

    USE [WebRI]

    GO

    /****** Object:  StoredProcedure [dbo].[pr_cancelamento_guilherme]    Script Date: 11/07/2013 10:06:38 ******/

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    Create Procedure    [dbo].[pr_cancelamento_guilherme]

          

    As     Begin

           If  Exists(Select  * From    WEBRI..sysobjects Where   Name like 'Cartorio_Cancelamento_Diario%')

           Begin

                 Drop    Table   Cartorio_Cancelamento_Diario

           End

           Create Table Cartorio_Cancelamento_Diario(

                 Protocolo int,

                 Data_Recepcao Varchar(10),

                 Data_Cancelamento Varchar(10),

                 Data_Andamento Text,

                 Numero_Matricula int)

                

    declare @DataPesq varchar(30), @TextoLIKE varchar(100);

    set @DataPesq=convert(varchar, getdate(), 105);

    set @TextoLIKE = '%Cancelamento realizado por decurso de prazo em '+ @DataPesq + '%';

          

                 -- Dados -- 

                 Insert Cartorio_Cancelamento_Diario(

                 Protocolo,

                 Data_Recepcao,

                 Data_Cancelamento,

                 Data_Andamento,

                 Numero_Matricula

                 )

          

           SELECT DISTINCT

     MAX(dbo.tblWRIRecepcao.PK_Recepcao) AS Protocolo, MAX(dbo.tblWRIRecepcao.DtRecep) AS Data_Recepcao,

                          MAX(dbo.tblWRIRecepcao.DtCancelamento) AS Data_Cancelamento, MAX(dbo.tblWRIAndamentos.Observacao) AS Data_Andamento,

                          MAX(dbo.tblWRIReal.PK_Num_Livro) AS Numero_Matricula

    FROM         dbo.tblWRIRecepcao INNER JOIN

                          dbo.tblWRITitulos ON dbo.tblWRITitulos.FK_tblWRIRecepcaoRecepcao = dbo.tblWRIRecepcao.PK_Recepcao INNER JOIN

                          dbo.tblWRIAndamentos ON dbo.tblWRIAndamentos.FK_tblWRIRecepcaoRecepcao = dbo.tblWRIRecepcao.PK_Recepcao INNER JOIN

                          dbo.tblWRITitulosReal ON dbo.tblWRITitulosReal.FK_tblWRIRecepcaoRecepcao = dbo.tblWRIRecepcao.PK_Recepcao INNER JOIN

                          dbo.tblWRIReal ON dbo.tblWRIReal.PK_Id = dbo.tblWRITitulosReal.FK_tblWRIReal_Id

    WHERE    (dbo.tblWRIAndamentos.FK_tblWRITpAndamento_Id = 46)

    AND (dbo.tblWRITitulos.DtDevolucao IS NULL)

    AND (dbo.tblWRITitulos.DataUltimoRegistro IS NULL)

    AND (dbo.tblWRITitulos.DtRetirada IS NULL)

    AND (dbo.tblWRIRecepcao.DtCancelamento = dbo.tblWRIRecepcao.DtExpiraPrn)

    AND (dbo.tblWRIAndamentos.Observacao LIKE @TextoLIKE)

    GROUP BY dbo.tblWRIRecepcao.PK_Recepcao

    ORDER BY dbo.tblWRIRecepcao.PK_Recepcao

    O erro é o seguinte:

    Msg 102, Level 15, State 1, Procedure pr_cancelamento_guilherme, Line 57
    Incorrect syntax near 'PK_Recepcao'.

    O Erro é na linha do Order By


    quinta-feira, 11 de julho de 2013 13:34

Respostas

  • Carlos,

    Por que voce precisa desse order by? voce pode remove-lo que não terá diferença nenhuma.

    OBS: Esse erro não acontece em uma instancia 2008, mas é que voce esta dando order by por um campo que não existe no seu select. Mas novamente, analisando a query, não existe o por que deste ORDER by estar ai.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta J.Carlos.Rib quinta-feira, 11 de julho de 2013 14:20
    quinta-feira, 11 de julho de 2013 14:14
    Moderador

Todas as Respostas

  • Carlo,s

    Tente desta forma:

    USE [WebRI]
    GO
    /****** Object:  StoredProcedure [dbo].[pr_cancelamento_guilherme]    Script Date: 11/07/2013 10:06:38 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    Create Procedure    [dbo].[pr_cancelamento_guilherme]
          
    As     Begin
           If  Exists(Select  * From    WEBRI..sysobjects Where   Name like 'Cartorio_Cancelamento_Diario%')
           Begin
                 Drop    Table   Cartorio_Cancelamento_Diario
           End
           Create Table Cartorio_Cancelamento_Diario(
                 Protocolo int,
                 Data_Recepcao Varchar(10),
                 Data_Cancelamento Varchar(10),
                 Data_Andamento Text,
                 Numero_Matricula int)
                
    declare @DataPesq varchar(30), @TextoLIKE varchar(100);
    set @DataPesq=convert(varchar, getdate(), 105);
    set @TextoLIKE = '%Cancelamento realizado por decurso de prazo em '+ @DataPesq + '%';
          
                 -- Dados -- 
                 Insert Cartorio_Cancelamento_Diario(
                 Protocolo,
                 Data_Recepcao,
                 Data_Cancelamento,
                 Data_Andamento,
                 Numero_Matricula
                 )
          
           SELECT DISTINCT
     MAX(dbo.tblWRIRecepcao.PK_Recepcao) AS Protocolo, MAX(dbo.tblWRIRecepcao.DtRecep) AS Data_Recepcao,
                          MAX(dbo.tblWRIRecepcao.DtCancelamento) AS Data_Cancelamento, MAX(dbo.tblWRIAndamentos.Observacao) AS Data_Andamento,
                          MAX(dbo.tblWRIReal.PK_Num_Livro) AS Numero_Matricula
    FROM         dbo.tblWRIRecepcao INNER JOIN
                          dbo.tblWRITitulos ON dbo.tblWRITitulos.FK_tblWRIRecepcaoRecepcao = dbo.tblWRIRecepcao.PK_Recepcao INNER JOIN
                          dbo.tblWRIAndamentos ON dbo.tblWRIAndamentos.FK_tblWRIRecepcaoRecepcao = dbo.tblWRIRecepcao.PK_Recepcao INNER JOIN
                          dbo.tblWRITitulosReal ON dbo.tblWRITitulosReal.FK_tblWRIRecepcaoRecepcao = dbo.tblWRIRecepcao.PK_Recepcao INNER JOIN
                          dbo.tblWRIReal ON dbo.tblWRIReal.PK_Id = dbo.tblWRITitulosReal.FK_tblWRIReal_Id
    WHERE    (dbo.tblWRIAndamentos.FK_tblWRITpAndamento_Id = 46)
    AND (dbo.tblWRITitulos.DtDevolucao IS NULL)
    AND (dbo.tblWRITitulos.DataUltimoRegistro IS NULL)
    AND (dbo.tblWRITitulos.DtRetirada IS NULL)
    AND (dbo.tblWRIRecepcao.DtCancelamento = dbo.tblWRIRecepcao.DtExpiraPrn)
    AND (dbo.tblWRIAndamentos.Observacao LIKE @TextoLIKE)
    GROUP BY dbo.tblWRIRecepcao.PK_Recepcao
    ORDER BY dbo.tblWRIRecepcao.PK_Recepcao
    END

    Estava faltando um "END" no final de seu codigo.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    • Sugerido como Resposta Diego_nogueira quinta-feira, 13 de março de 2014 15:07
    quinta-feira, 11 de julho de 2013 13:38
    Moderador
  • Fabrizzio, obrigado

    agora esta dando este erro:

    Msg 145, Level 15, State 1, Procedure pr_cancelamento_guilherme, Line 30 ORDER BY items must appear in the select list if SELECT DISTINCT is specified.

    quinta-feira, 11 de julho de 2013 14:13
  • Carlos,

    Por que voce precisa desse order by? voce pode remove-lo que não terá diferença nenhuma.

    OBS: Esse erro não acontece em uma instancia 2008, mas é que voce esta dando order by por um campo que não existe no seu select. Mas novamente, analisando a query, não existe o por que deste ORDER by estar ai.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta J.Carlos.Rib quinta-feira, 11 de julho de 2013 14:20
    quinta-feira, 11 de julho de 2013 14:14
    Moderador