Pular para o conteúdo
  • Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 8 anos, 4 meses atrás por Avatar photoJosé Laurindo Chiappa.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #108242
    Avatar de Tadeu Rodrigues de OliveiraTadeu Rodrigues de Oliveira
    Participante

      Pessoal no SQL Server existe uma proc chamada sp_executesql que executa qualquer comando sql exemplo:

      sp_executesql ‘select * from tabela;’;

      No ORACLE existe uma procedure ou função compatível?

      Obrigado,

      Tadeu.

      #108243
      Avatar de spernegaspernega
      Participante

        Bom dia,

        Você pode usar o EXECUTE IMMEDIATE ‘UPDATE employees_temp SET commission_pct = :x’

        #108244
        Avatar de spernegaspernega
        Participante

          o bbCode foi sem querer…

          #108245
          Avatar de Tadeu Rodrigues de OliveiraTadeu Rodrigues de Oliveira
          Participante

            Cara o execute immediate não funciona para este fim já testei isso inclusive em outro poste que você mesmo tentou me ajudar mas de qualquer forma obrigado.

            #108247
            Avatar de spernegaspernega
            Participante

              Ok,

              Na próxima eu tento de novo…

              Se você quiser especificar mais o que você esta tentando fazer, pode surgir mais alguma ideia.

              #108275
              Avatar photoJosé Laurindo Chiappa
              Moderador

                A resposta é ** ultra-simples ** : 100% compatível, que funcione IGUALZINHO, com a mesma Exata sintaxe e parâmetros, implementada Igualzinho, é ULULANTEMENTE ÓBVIO que não tem – diferentes fornecedores implementas recursos de maneira Absolutamente Diferente…
                Então vc vai ter que estudar e aprender como se faz SQL dinâmico no Oracle, e não tentar adaptar o conhecimento de SQL dinâmico que vc tem do SQL Server, okdoc ?? No caso do RDBMS Oracle, pra ter SQL dinâmico vc pode :

                a) colocar no seu programa um EXECUTE IMMEDIATE ‘stringcomoSQLaexecutar’ (ou ter a string numa variável e passar a variável como argumento pro EXECUTE IMMEDIATE) , http://www.databasejournal.com/features/oracle/article.php/2109681/EXECUTE-IMMEDIATE-option-for-Dynamic-SQL-and-PLSQL.htm tem uns exemplos… Isso ** FUNCIONA SIM ** se vc usar corretamente…

                OU

                b) usa a PACKAGE (** não é uma única função restrita, é uma BIBLIOTECA de funções com tudo que vc precisa pra SQL dinãmico) chamada DBMS_SQL : http://www.orafaq.com/wiki/Dynamic_SQL tem alguns exemplos

                OU

                c) passa uma string SQL pra uma variável do tipo CURSOR, http://www.oracle.com/technetwork/issue-archive/2009/09-jul/o49asktom-090487.html um exemplo

                Qual vc usa ? DPENDE da sua necessidade : para necessidades simples, como DDLs, queries simples que não retornam múltiplos valores e coisas assim eu vou pro EXECUTE IMMEDIATE, para situações onde vc tem uma Rotina sua (uma procedure, talvez) que vai retornar um RESULTSET eu optaria pelo REF CURSOR, reservando o DBMS_SQL para situações mais complexas, onde eu preciso ter controle de quantos PARSES vão ser feitos, posso re-executar o mesmo SQL múltiplas vezes, preciso usar BIND VALUES para array processing, etc….

                []s

                Chiappa

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress