MariaDB
 sql >> Database >  >> RDS >> MariaDB

Combinando la potenza di SQL e istruzioni procedurali con la modalità di compatibilità Oracle di MariaDB

In MariaDB Server 10.3, abbiamo aggiunto una nuova modalità SQL (SQL_MODE=ORACLE) per fornire compatibilità con un sottoinsieme di Oracle PL/SQL, un'estensione procedurale dello Structured Query Language (SQL). Con la recente versione di MariaDB Community Server 10.6, abbiamo continuato il nostro viaggio per espandere la compatibilità PL/SQL di MariaDB aggiungendo diverse funzioni come ROWNUM() , ADD_MONTHS() e TO_CHAR() . Questo è fantastico per una serie di motivi, ma per iniziare, MariaDB rimane l'unico database a implementare la compatibilità Oracle open source, quindi questa funzionalità è disponibile per tutti. Per capire veramente cosa significa, è importante per noi fare un breve passo indietro in modo che tu sappia perché per cominciare abbiamo intrapreso questa strada.

Il potere della programmazione procedurale e dichiarativa

Combinando la potenza di manipolazione dei dati del linguaggio SQL con le capacità procedurali, gli sviluppatori hanno una miriade di nuove ed entusiasmanti opportunità. Usando PL/SQL, gli sviluppatori hanno la possibilità di eseguire istruzioni SQL che si concentrano sull'approccio dichiarativo di "cosa fare", fornendo anche la possibilità di controllare il flusso delle operazioni o "come farlo".

Aspetta cosa? OK, considera il seguente tradizionale Istruzione SQL.

SELECT id, name, has_kids FROM friends;

Semplice, elegante ed efficace. SQL è un bel linguaggio, ma ha i suoi limiti. Ad esempio, se volessi scorrere i risultati restituiti da SELECT esecuzione dell'istruzione? E poi, durante l'analisi dei risultati, controlla ogni risultato usando un'istruzione condizionale (ad es. if has_kids è vero) in modo da poter eseguire operazioni specifiche in base a tali condizioni?

Nota rapida :Questo è puramente ipotetico. Sono sicuro che se hai amici con bambini e amici senza bambini li tratti tutti allo stesso modo. Ma, per il bene di questo esempio, diciamo che non lo fai. OK? Va bene, bene.

Ma con tutte quelle iterazioni e condizioni che si verificano è possibile che si verifichi un errore. Non sarebbe bello se potessi gestire gli errori (cioè le eccezioni) direttamente sul lato database, senza dover prima restituire i risultati originali al codice dell'applicazione da elaborare? Beh, è ​​davvero un peccato, perché stai usando un semplice vecchio SQL e nessuna di queste cose è possibile.

Non aver paura! Invece, vieni con me nel meraviglioso mondo di PL/SQL!

Attraverso l'uso di qualcosa noto come blocco PL/SQL, puoi combinare l'SQL che conosci e ami con le capacità procedurali che ti permetteranno di controllare il flusso delle operazioni utilizzando funzionalità come la capacità di dichiarare variabili, gestire condizioni, loop attraverso i dati, gestire le eccezioni e molto altro.

I blocchi PL/SQL vengono gestiti all'interno di MariaDB Server, dove le istruzioni SQL e procedurali vengono analizzate ed eseguite di conseguenza.

Abbastanza bello, vero? Diventa molto meglio! Ma torniamo al nostro esempio precedente. Puoi utilizzare un singolo blocco PL/SQL per eseguire tutto ciò che ho indicato prima.

Ad esempio:

DELCARE 
	CURSOR c IS SELECT id, name, has_kids FROM friends;
BEGIN 
	FOR friend_row IN c LOOP
		IF friend_row.has_kids == true THEN
			/* Do something */
		ELSE
			/* Do something else */
		END IF;
	END LOOP;
EXCEPTION
	WHEN no_data_found THEN
		/* Handle no data found */
	WHEN others THEN
		/* Handle all other kinds of exceptions */
END;

Ulteriori informazioni

Roba potente, giusto? Bene, questo post sul blog è davvero solo la punta dell'iceberg. Qualcosa per stuzzicare l'appetito, se vuoi. Ma se vuoi saperne di più, ti consiglio vivamente di guardare un webinar che abbiamo presentato di recente, MariaDB e PL/SQL:Combinare la potenza di SQL e le istruzioni procedurali. In esso, ci addentriamo in molti più dettagli sul motivo per cui abbiamo deciso di aggiungere ed espandere il supporto PL/SQL e includiamo una varietà di esempi e una dimostrazione di codifica dal vivo, che ti danno uno sguardo in prima persona su come puoi usare PL/SQL all'interno di MariaDB! Buona programmazione, amici!