none
Execute immediate do Oracle... tem como? RRS feed

  • Pergunta

  • Preciso executar uma instrução contida em uma string. No Oracle é possivel executar qualquer instrução passada como uma string atraves do comando execute immediate.

     

    Exemplo: EXECUTE IMMEDIATE 'select (1+1+1) from dual'  --Retorna 3 sendo que esse resultado pode ser atribuido a uma variavel.

     

    Como faço isso no MSSQL?

     

    OBS: Esse método é usado para resolver fórmulas, pois no Oracle é respeitado os parenteses de dentro para fora.

     

    Obrigado.

     

    segunda-feira, 22 de setembro de 2008 15:11

Respostas

  • Code Snippet

    DECLARE @Valor float;

    DECLARE @Formula varchar(50);

    DECLARE @Result TABLE (Formula varchar(50));

     

    DELETE @Result

    INSERT INTO @Result

    EXEC ('SELECT (1+1+1)')

    SELECT @Formula = Formula FROM @Result;

    SELECT @Formula

     

     

     

    segunda-feira, 22 de setembro de 2008 18:29

Todas as Respostas

  • Olá Tytto,

    No SQL Server você tem o comando EXEC, que tem o mesmo propósito. No seu exemplo, ficaria:

    EXEC ('SELECT (1+1+1)')


    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    segunda-feira, 22 de setembro de 2008 15:20
  • Tytto,

     

          Apenas acrescentando... O EXEC é a forma abreviada.. Você também pode usar EXECUTE, e não apenas para executar queries, mas também funções definidas pelo usuário (UDF´s) e Stored Procedures...

     

    segunda-feira, 22 de setembro de 2008 15:36
    Moderador
  • Tytto,

     

    É importante também destacar que tanto o Exec ou Execute, quando são processados pelo SQL Server criam uma sessão temporário para ser executada.

    segunda-feira, 22 de setembro de 2008 16:46
  • Obrigado pelas respostas...

     

    Funciona... porém não consigo colocar o valor desse resultado em uma variavel...

    Como ficaria para atribuir esse resultado em uma variavel de uma stored procedure?

     

    Obrigado.

     

    segunda-feira, 22 de setembro de 2008 16:48
  • Tytto,

     

    A variável esta dentro da Stored Procedure ou você esta declarando a variável e depois executando a Stored Procedure?

     

    Uma possibilidde seria utilizar a system stored procedure SP_ExecuteSQL!!!

    segunda-feira, 22 de setembro de 2008 16:51
  • A variavel está dentro da procedure...

    Preciso atualizá-la com o valor do resultado da fórmula e continuar o processamento...

     

    Exemplo:

     

    declare @Valor float;

    declare @Formula varchar(50);

    ...

    set @Formula = '(1+1+1)';

     

    O que preciso, é atualiza a variavel "@Valor" com o resultado da formula contida da variave "@Formula" (que resultará em 3).

     

    Obrigado.

     

     

    segunda-feira, 22 de setembro de 2008 16:59
  • Code Snippet

    DECLARE @Valor float;

    DECLARE @Formula varchar(50);

    DECLARE @Result TABLE (Formula varchar(50));

     

    DELETE @Result

    INSERT INTO @Result

    EXEC ('SELECT (1+1+1)')

    SELECT @Formula = Formula FROM @Result;

    SELECT @Formula

     

     

     

    segunda-feira, 22 de setembro de 2008 18:29