none
Retornar int de um procedure com query dinamica RRS feed

  • Pergunta

  • exemplo eu tenho uma query dinamica, porem tenho que dar um return e carregar o total de registros encontrados

     

    declare @sql as varchar(max)

    set @sql = 'select count(id) as total from tabela where ' + pamatros dinamicos 

     

    declare @total as int

    set @total = (@sql)

    return @total

     

    Algume sabe como posso fazer em uma query dinamica?


    http://www.devcursos.com.br
    sexta-feira, 3 de dezembro de 2010 20:14

Respostas

  • Lontra,

    vc pode usar o sp_executesql, segue um exemplo do bol adaptado

    DECLARE @IntVariable int;
    DECLARE @SQLString nvarchar(500);
    DECLARE @ParmDefinition nvarchar(500);
    DECLARE @count varchar(30);
    
    SET @IntVariable = 197;
    SET @SQLString = N'SELECT @countOUT = count(id) 
      FROM tabela WHERE codigo = @codigo';
    SET @ParmDefinition = N'@codigo tinyint, @countOUT varchar(30) OUTPUT';
    
    EXECUTE sp_executesql @SQLString, @ParmDefinition, @codigo = @IntVariable, @countOUT=@count OUTPUT;
    SELECT @count;
    

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Sugerido como Resposta Gustavo Maia Aguiar segunda-feira, 6 de dezembro de 2010 01:29
    • Marcado como Resposta Lontra Dandi quarta-feira, 8 de dezembro de 2010 23:28
    sexta-feira, 3 de dezembro de 2010 20:58
    Moderador

Todas as Respostas

  • Lontra,

    vc pode usar o sp_executesql, segue um exemplo do bol adaptado

    DECLARE @IntVariable int;
    DECLARE @SQLString nvarchar(500);
    DECLARE @ParmDefinition nvarchar(500);
    DECLARE @count varchar(30);
    
    SET @IntVariable = 197;
    SET @SQLString = N'SELECT @countOUT = count(id) 
      FROM tabela WHERE codigo = @codigo';
    SET @ParmDefinition = N'@codigo tinyint, @countOUT varchar(30) OUTPUT';
    
    EXECUTE sp_executesql @SQLString, @ParmDefinition, @codigo = @IntVariable, @countOUT=@count OUTPUT;
    SELECT @count;
    

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Sugerido como Resposta Gustavo Maia Aguiar segunda-feira, 6 de dezembro de 2010 01:29
    • Marcado como Resposta Lontra Dandi quarta-feira, 8 de dezembro de 2010 23:28
    sexta-feira, 3 de dezembro de 2010 20:58
    Moderador
  • Lontra,

    Outra possibilidade seria transformar este código em stored procedure utilizando parâmetros de saída, ou uma função.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    domingo, 5 de dezembro de 2010 00:09