Oracle
 sql >> Database >  >> RDS >> Oracle

Introduzione all'SQL dinamico nativo nel database Oracle

SQL dinamico nativo

Prima di iniziare l'apprendimento dell'SQL dinamico nativo, è importante un breve background. Oracle ha fatto un regalo di metà estate nel maggio 1994 a tutti gli sviluppatori introducendo il concetto Dynamic SQL nel suo Database versione 7.1 (aka Oracle 7.1). Con questo ha consentito agli sviluppatori di scrivere l'SQL dinamico tramite il pacchetto "DBMS_SQL".

Ma gradualmente la libreria DBMS_SQL ha iniziato a perdere il suo fascino. A causa delle sue sintassi "Non così facile", "Prestazioni lente" e "Tipi definiti dall'utente non supportati". Tutte queste carenze hanno sollevato la necessità di qualcos'altro. Il che potrebbe aiutare gli sviluppatori a scrivere un codice ben ottimizzato senza stressare eccessivamente le loro menti.

Oracle si è preso il suo tempo, quasi cinque anni. Infine, ha rilasciato una versione migliorata di Dynamic SQL con il lancio di Oracle Database 8i o per essere precisi Oracle Database versione 8.1.5 nel febbraio 1999. A causa della sua natura stabile questa versione migliorata di Dynamic SQL è diventata la parte nativa di PL/ Linguaggio SQL e ha preso il nome "Native Dynamic SQL" attraverso il quale è noto ormai da giorni. Questa è una breve introduzione della genesi dell'SQL dinamico nativo in Oracle Database.

Per comprendere l'SQL dinamico nativo, dobbiamo prima capire cos'è l'SQL statico in Oracle Database?

Cos'è l'SQL statico?

Come suggerisce il nome, qualsiasi istruzione SQL che non cambia durante il runtime è chiamata istruzione SQL statica.

Il vantaggio delle istruzioni SQL statiche è che sappiamo già se tutti gli oggetti dipendenti su cui stiamo scrivendo l'istruzione sono presenti o meno. Un altro vantaggio delle istruzioni SQL statiche è che le codifichiamo nella nostra applicazione. In questo modo possiamo sintonizzarli per prestazioni ottimali.

Ora che abbiamo imparato cos'è l'SQL statico, vediamo cos'è l'SQL dinamico?

Cos'è l'SQL dinamico nativo?

Come suggerisce il nome, qualsiasi istruzione SQL costruita in fase di esecuzione viene chiamata SQL dinamico . Queste affermazioni sono costruite al volo. Pertanto non possono essere codificati nell'applicazione. Questo a sua volta aumenta la loro flessibilità.

Da un lato l'SQL statico consente di eseguire solo istruzioni DML all'interno del blocco PL/SQL. D'altra parte, l'SQL dinamico ti consente di eseguire istruzioni DDL e anche questo all'interno del tuo blocco PL/SQL. Pertanto, utilizzando Dynamic SQL puoi creare una tabella o eliminare un indice o troncare la tabella direttamente all'interno del blocco PL/SQL. Questo è un vantaggio dell'SQL dinamico nativo rispetto all'SQL statico.

Che cos'è PL/SQL dinamico nativo?

Simile all'SQL dinamico, il processo di costruzione del codice PL/SQL in fase di esecuzione è chiamato PL/SQL dinamico.

Ora diamo un'occhiata ai vantaggi di Native Dynamic SQL sul pacchetto DBMS_SQL in Oracle Database.

Vantaggi dell'SQL dinamico nativo

  • Codici facili da usare: Rispetto al pacchetto DBMS_SQL, l'SQL dinamico nativo è molto facile da usare. Ciò è dovuto principalmente al fatto che è incorporato nell'SQL stesso. Equivale all'utilizzo di SQL statico all'interno di un codice PL/SQL. Anche il codice SQL dinamico nativo è più compatto e leggibile del pacchetto DBMS_SQL. Quest'ultimo richiede una grande quantità di codici a causa di rigorose procedure sequenziali. Lo rende più complesso.
  • Miglioramento nell'esecuzione del codice: C'è un supporto integrato per SQL dinamico nativo nell'interprete PL/SQL. Pertanto i programmi che lo utilizzano sono più efficienti di quelli che utilizzano il pacchetto DBMS_SQL. Fondamentalmente l'SQL dinamico nativo combina i passaggi che coinvolgono la preparazione, l'associazione e l'esecuzione in un'unica operazione. Ciò riduce il sovraccarico delle chiamate alla procedura e della copia dei dati, migliorando a sua volta le prestazioni.
  • Supporto per i tipi definiti dall'utente: A differenza del pacchetto DBMS_SQL, l'SQL dinamico nativo supporta tutti i tipi di tipi definiti dall'utente. Ad esempio oggetti definiti dall'utente, REF e raccolte.
  • Supporto per il recupero nei record: Le righe che sono il risultato di una query possono essere recuperate direttamente nei record PL/SQL utilizzando l'SQL dinamico nativo. Questo non è possibile con il pacchetto DBMS_SQL.

Quali sono le funzionalità di Dynamic SQL in Oracle Database?

  1. In primo luogo, DDL e DML dinamici con l'uso di qualsiasi variabile di collegamento.
  2. In secondo luogo, Dynamic DQL e
  3. In terzo luogo, DML dinamico che utilizza un elenco noto di variabili di collegamento

Queste sono le tre funzionalità che Dynamic SQL aggiunge alla tua programmazione PL/SQL.

Quindi, come utilizziamo l'SQL dinamico in Oracle Database?

I due metodi più comuni per utilizzare SQL dinamico e PL/SQL in Oracle Database sono:

  1. Esegui dichiarazione immediata e
  2. Blocco Apri-For, Recupera e Chiudi.

L'istruzione Execute Immediate viene utilizzata quando la query restituisce dati a riga singola. Nel caso in cui la query restituisca dati su più righe, è possibile utilizzare Open-For, Recupera e chiudi blocco. Impareremo in dettaglio su Esegui Immediato e Apri per, recupera e chiudi blocco nei prossimi tutorial.

Esistono altri modi per utilizzare Dynamic SQL in Oracle Database?

A parte i metodi più comunemente usati sopra menzionati, gli altri modi di usare SQL dinamico o PL/SQL sono

  • Con recupero collettivo
  • In secondo luogo con l'esecuzione in blocco immediata
  • Insieme a Bulk FORALL e
  • Infine con l'estratto conto Bulk Collect In

Abbiamo appreso tutti i comandi e le istruzioni di cui sopra nella serie precedente sull'elaborazione di dati in blocco.

Se ti piace imparare attraverso il video tutorial, dai un'occhiata.

Questa è un'introduzione dettagliata all'SQL dinamico nativo in Oracle Database. Spero ti sia piaciuto leggere. Assicurati di Condividi il link di questo blog con i tuoi amici sui tuoi social media. Assicurati inoltre di iscriverti al canale YouTube per seguire questa serie e imparare qualcosa di nuovo e interessante.

Grazie e buona giornata!