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?
- Primeiro, DDL e DML dinâmicos com o uso de qualquer variável de vinculação.
- Em segundo lugar, DQL dinâmico e
- 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:
- Executar declaração imediata e
- 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!