none
Efetuando calculo dinamico no SQL RRS feed

  • Pergunta

  • Boa tarde amigos,

     

    Estou com um problema que não sei se o SQL SERVER 2005 vai poder me ajudar do jeito que eu gostaria.

    Minha situação é a seguinte.

     

    Tenho uma consulta que possui o retorno como a que está abaixo:

     

    select '(10.0+6.0)/2'

     

    Gostaria de saber se é possível eu já retornar o resultado dessa consulta, no caso 8.

     

     

    Grato pela atenção e tudo de bom a todos,

    Leandro Amorim

    terça-feira, 15 de abril de 2008 19:01

Respostas

  • Opa, com um sobrenome desses eu tinha que ajudar. J

     

    Code Snippet

    DECLARE @SQL VarChar(8000)

     

    SELECT @SQL = '(10.0+6.0)/2'

     

    EXEC ('SELECT ' + @SQL)

     

     

     

    terça-feira, 15 de abril de 2008 20:15
  • A familia Amorim esta presente no fórum.

     

    Veja se este exemplo poderá ajudar:

    Code Snippet

     

    Create Procedure P_Calcular @Valor1 Int, @Valor2 Int, @Operador Char(1)

    As

    Begin

    Declare @Comando VarChar(100)

    Set @Comando='Select '+Convert(Varchar(3),@Valor1)+@Operador+Convert(Varchar(3),@Valor2)

    Exec(@comando)

    End

     

    P_Calcular 10, 2, '/'

     

     

    terça-feira, 15 de abril de 2008 20:35
  • E ai primo!? hehehehehehe

     

    Aqui em Campo Grande MS, principalmente o pessoal da colonia japonesa diz que quando não sabendo o parentesco de alguem que tem o mesmo nome que a gnt,  chamamos de primo! Hehehehehehehe

     

     

    Mas então.. eu cheguei a encontrar essa solução. A questão é que meu problema vai mais além um pouco.

     

    No caso eu teria que listar os campos das notas e o resultado delas. O que acaba eliminando a solução que tu sugeriu, pois o EXEC não é aceito dentro de Select

     

    O que eu preciso seria algo +/- assim:

     

    Select NT01, NT02, NT03, NT04, (EXEC ('SELECT ' + @Formula)) as Resultado

    From TabNota

     

     

    * supondo nesse exemplo que a formula estivesse somente com dados numéricos já.

     

    Abração a todos e tudo bom.

    Leandro Amorim

    terça-feira, 15 de abril de 2008 21:49
  •  

    veja este outro exemplo

     


    -- Create Table Exemplo (Campo int , Formula Varchar(20))
    -- insert into Exemplo (Campo, Formula) Values (1, '(10.0+6.0)/2')

     

    Declare @Execute NVarchar(1000)

    select @Execute = 'Select campo, ' + formula + ' From Exemplo' From Exemplo

    Exec Sp_executeSql @Execute

     


     

     

    Abs;

    quarta-feira, 16 de abril de 2008 10:55

Todas as Respostas

  • Opa, com um sobrenome desses eu tinha que ajudar. J

     

    Code Snippet

    DECLARE @SQL VarChar(8000)

     

    SELECT @SQL = '(10.0+6.0)/2'

     

    EXEC ('SELECT ' + @SQL)

     

     

     

    terça-feira, 15 de abril de 2008 20:15
  • A familia Amorim esta presente no fórum.

     

    Veja se este exemplo poderá ajudar:

    Code Snippet

     

    Create Procedure P_Calcular @Valor1 Int, @Valor2 Int, @Operador Char(1)

    As

    Begin

    Declare @Comando VarChar(100)

    Set @Comando='Select '+Convert(Varchar(3),@Valor1)+@Operador+Convert(Varchar(3),@Valor2)

    Exec(@comando)

    End

     

    P_Calcular 10, 2, '/'

     

     

    terça-feira, 15 de abril de 2008 20:35
  • E ai primo!? hehehehehehe

     

    Aqui em Campo Grande MS, principalmente o pessoal da colonia japonesa diz que quando não sabendo o parentesco de alguem que tem o mesmo nome que a gnt,  chamamos de primo! Hehehehehehehe

     

     

    Mas então.. eu cheguei a encontrar essa solução. A questão é que meu problema vai mais além um pouco.

     

    No caso eu teria que listar os campos das notas e o resultado delas. O que acaba eliminando a solução que tu sugeriu, pois o EXEC não é aceito dentro de Select

     

    O que eu preciso seria algo +/- assim:

     

    Select NT01, NT02, NT03, NT04, (EXEC ('SELECT ' + @Formula)) as Resultado

    From TabNota

     

     

    * supondo nesse exemplo que a formula estivesse somente com dados numéricos já.

     

    Abração a todos e tudo bom.

    Leandro Amorim

    terça-feira, 15 de abril de 2008 21:49
  •  

    veja este outro exemplo

     


    -- Create Table Exemplo (Campo int , Formula Varchar(20))
    -- insert into Exemplo (Campo, Formula) Values (1, '(10.0+6.0)/2')

     

    Declare @Execute NVarchar(1000)

    select @Execute = 'Select campo, ' + formula + ' From Exemplo' From Exemplo

    Exec Sp_executeSql @Execute

     


     

     

    Abs;

    quarta-feira, 16 de abril de 2008 10:55