1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

store procedure sql server 2005

Discussão em 'Programação' iniciada por alfinete, 3 de Janeiro de 2008. (Respostas: 0; Visualizações: 2972)

  1. alfinete

    alfinete Power Member

    Código:
    
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    
    
    -- =============================================
    -- Author:        <Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:    <Description,,>
    -- =============================================
    
    ALTER PROCEDURE [dbo].[test_limit] 
    
    @tptribunal  int = null,
    @tpprocesso  int = null,
    @tpassunto  int = null,
    @datainicio  varchar(6) = null,
    @datafim  varchar(6) = null,
    @palavrachave varchar(256)=null,
    @inicio int,
    @fim int
    [email protected] int OUT
    
    AS
    declare @QUERY NVARCHAR(1200)
    declare @arg smallint
    
    --SET @res=0
    set @arg = 0
    
    BEGIN
    
    SET NOCOUNT ON;
    
    SET @QUERY ='
    
    SELECT NumeroProcesso,SiglaTP,SiglaTT,SiglaA,DataDecisao,Documento  
      FROM(SELECT  ROW_NUMBER() OVER (ORDER BY p.DataDecisao asc)
           AS Row, p.NumeroProcesso,tp.Sigla as SiglaTP,tt.Sigla as SiglaTT,
           a.Sigla as SiglaA,p.DataDecisao,p.Documento FROM dbo.TabProcesso p
    
           JOIN dbo.TabTipoProcesso tp ON tp.IdTipoProcesso = p.TipoProcesso    
           JOIN dbo.TabTribunal tt ON tt.IdTribunal = p.Tribunal
           JOIN dbo.TabAssunto a ON a.IdAssunto = p.Assunto
    
      ' 
    ---------------------------------DDL'S -----------------------------------
    IF @tptribunal != 0
        if @arg = 0
            begin
                SET @QUERY = @QUERY + 'where tribunal = @tptribunal '
                set @arg = @arg + 1
            end
        else
            begin
                SET @QUERY = @QUERY + 'and tribunal = @tptribunal '
            end 
    
    IF @tpprocesso != 0
        if @arg = 0
            begin
                SET @QUERY = @QUERY + 'where tipoprocesso = @tpprocesso '
                set @arg = @arg + 1
            end
        else
            begin
                SET @QUERY = @QUERY + 'and tipoprocesso = @tpprocesso '
            end 
    
    
    IF @tpassunto != 0
        if @arg = 0
            begin
                SET @QUERY = @QUERY + 'where assunto = @tpassunto '
                set @arg = @arg + 1
            end
        else
            begin
                SET @QUERY = @QUERY + 'and assunto = @tpassunto '
            end 
    ------------------------------DDL DATAS -----------------------------------
    
    
    if (@datainicio !='') and (@datafim !='')
    
        if @arg = 0
            begin
                SET @QUERY = @QUERY + 'where ( substring(convert(varchar(20), datadecisao, 112),1,6) >= @datainicio and
                                              substring(convert(varchar(20), datadecisao, 112),1,6) <= @datafim
                                             )'
                set @arg = @arg + 1
            end
        else
            begin
                SET @QUERY = @QUERY + 'and (substring(convert(varchar(20), datadecisao, 112),1,6) >= @datainicio)
                                       and (substring(convert(varchar(20), datadecisao, 112),1,6) <= @datafim)'
            end 
    
    
    ----------------------------- palavra chave ----------------------------------
    if (@palavrachave !='')
    
    if @arg = 0
            begin
                SET @QUERY = @QUERY + 'where palavrachave like @palavrachave'
                set @arg = @arg + 1
            end
        else
            begin
                SET @QUERY = @QUERY + 'and palavrachave like @palavrachave'
            end 
    
    
    SET @QUERY = @QUERY + ')AS LogWithRowNumbers WHERE Row >= @inicio AND Row <= @fim'
    
    
    EXECUTE sp_executesql  @QUERY, N' @tptribunal int,@tpprocesso int,@tpassunto int,@datainicio varchar(6),@datafim varchar(6),@palavrachave varchar(256),@inicio int,@fim int ',
                   @tptribunal,@tpprocesso,@tpassunto,@datainicio,@datafim,@palavrachave,@inicio,@fim
    
    select @query
    --SET @res=@@ROWCOUNT
    
    END
    
    
    tenho esta store , mas quando fasso pesquiza quer geral quer não geral devolve-me sempre o numero total de registos que existem na tabela, e eu queria que me devolvesse apaenas o numero de registos que estão a ser pesquisados

    agradecia uma ajuda
     

Partilhar esta Página