Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Introdução ao SQL dinâmico nativo no banco de dados Oracle

SQL dinâmico nativo


Antes de começar a aprender SQL dinâmico nativo, um breve histórico é importante. A Oracle deu um presente de verão em maio de 1994 a todos os desenvolvedores, introduzindo o conceito Dynamic SQL em seu banco de dados versão 7.1 (também conhecido como Oracle 7.1). Com isso permitiu que os desenvolvedores escrevessem o SQL dinâmico através do pacote “DBMS_SQL”.

Mas aos poucos a biblioteca DBMS_SQL começou a perder seu charme. Por causa de suas sintaxes “não tão fáceis”, o “desempenho lento” e “tipos definidos pelo usuário não suportados”. Todas essas deficiências levantaram a necessidade de algo mais. O que poderia ajudar os desenvolvedores a escrever um código bem otimizado sem colocar estresse excessivo em suas mentes.

A Oracle demorou, quase cinco anos. Finalmente, lançou uma versão melhorada do Dynamic SQL com o lançamento do Oracle Database 8i ou para ser mais preciso Oracle Database versão 8.1.5 em fevereiro de 1999. Devido à sua natureza estável, esta versão melhorada do Dynamic SQL tornou-se a parte nativa do PL/ SQL e recebeu o nome de “Native Dynamic SQL” pelo qual é conhecido hoje em dia. Essa é uma breve introdução da gênese do SQL dinâmico nativo no Oracle Database.

Para entender o SQL dinâmico nativo, primeiro precisamos entender o que é SQL estático no banco de dados Oracle?

O que é SQL estático?


Como o nome sugere, qualquer instrução SQL que não muda durante o tempo de execução é chamada de instrução SQL estática.

A vantagem das instruções SQL estáticas é que já sabemos se todos os objetos dependentes sobre os quais estamos escrevendo a instrução estão presentes ou não. Outra vantagem das instruções SQL estáticas é que as codificamos em nosso aplicativo. Assim, podemos ajustá-los para um desempenho ideal.

Agora que aprendemos o que é SQL estático, vamos ver o que é SQL dinâmico?

O que é SQL dinâmico nativo?


Novamente, como o nome sugere, qualquer instrução SQL construída no tempo de execução é chamada de SQL dinâmico . Essas declarações são construídas em tempo real. Portanto, eles não podem ser codificados no aplicativo. Isso, por sua vez, aumenta sua flexibilidade.

Por um lado, o SQL estático permite que você execute apenas instruções DML dentro do seu bloco PL/SQL. Por outro lado, o SQL dinâmico permite que você execute instruções DDL e também dentro do seu bloco PL/SQL. Assim, usando o SQL dinâmico, você pode criar uma tabela ou descartar um índice ou truncar sua tabela dentro do seu bloco PL/SQL. Esta é uma vantagem do SQL dinâmico nativo sobre o SQL estático.

O que é PL/SQL dinâmico nativo?


Semelhante ao SQL dinâmico, o processo de construção do código PL/SQL em tempo de execução é chamado de PL/SQL dinâmico.

Agora vamos dar uma olhada nos benefícios do pacote Native Dynamic SQL sobre DBMS_SQL no Oracle Database.

Benefícios do SQL dinâmico nativo

  • Códigos fáceis de usar: Em comparação com o pacote DBMS_SQL, o SQL dinâmico nativo é muito fácil de usar. Isso ocorre principalmente porque ele é incorporado ao próprio SQL. É equivalente a usar SQL estático em um código PL/SQL. Além disso, o código SQL dinâmico nativo é mais compacto e legível do que o pacote DBMS_SQL. Este último requer grande quantidade de códigos devido a procedimentos seqüenciais rigorosos. Isso torna tudo mais complexo.
  • Melhoria no desempenho do código: Há um suporte interno para SQL dinâmico nativo no interpretador PL/SQL. Assim os programas que o utilizam são mais eficientes do que aqueles que utilizam o pacote DBMS_SQL. Basicamente, o SQL dinâmico nativo combina as etapas que envolvem preparação, vinculação e execução em uma operação. Isso reduz a sobrecarga de chamada de procedimento e cópia de dados, melhorando o desempenho.
  • Suporte para tipos definidos pelo usuário: Ao contrário do pacote DBMS_SQL, o SQL dinâmico nativo suporta todos os tipos de tipos definidos pelo usuário. Por exemplo, objetos definidos pelo usuário, REFs e coleções.
  • Suporte para buscar em registros: As linhas que são o resultado de uma consulta podem ser buscadas diretamente em registros PL/SQL usando SQL dinâmico nativo. Isso não é possível com o pacote DBMS_SQL.

Quais são as funcionalidades do SQL dinâmico no banco de dados Oracle?

  1. Primeiro, DDL e DML dinâmicos com o uso de qualquer variável de vinculação.
  2. Em segundo lugar, DQL dinâmico e
  3. Em terceiro lugar, DML dinâmico usando uma lista conhecida de variáveis ​​de vinculação

Estas são as três funcionalidades que o Dynamic SQL adiciona à sua programação PL/SQL.

Então, como usamos SQL dinâmico no banco de dados Oracle?


Os dois métodos mais comuns de usar SQL dinâmico e PL/SQL no Oracle Database são:
  1. Executar declaração imediata e
  2. Abrir para, buscar e fechar bloco.

A instrução Execute Immediate é usada quando a consulta está retornando dados de linha única. Caso a consulta esteja retornando dados de várias linhas, você pode obter ajuda de Open-For, Fetch e close block. Vamos aprender sobre Execute Immediate e Open-for, fetch and close block em detalhes nos próximos tutoriais.

Existem outras maneiras de usar o SQL dinâmico no banco de dados Oracle?


Além dos métodos mais usados ​​mencionados acima, as outras maneiras de usar SQL dinâmico ou PL/SQL são
  • Com busca em massa
  • Em segundo lugar com execução em massa imediata
  • Juntamente com Bulk FORALL e
  • Por último, com a declaração de coleta em massa

Aprendemos todos os comandos e instruções acima na série anterior sobre processamento de dados em massa.

Se você gosta de aprender através de tutorial em vídeo, vá em frente, confira.



Essa é uma introdução detalhada ao SQL dinâmico nativo no banco de dados Oracle. Espero que tenha gostado de ler. Certifique-se de Compartilhar o link deste blog com seus amigos em suas redes sociais. Certifique-se também de se inscrever no canal do YouTube para acompanhar esta série e aprender algo novo e interessante.

Obrigado e tenha um ótimo dia!