MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Combiner la puissance de SQL et des instructions procédurales avec le mode de compatibilité Oracle de MariaDB

De retour dans MariaDB Server 10.3, nous avons ajouté un nouveau mode SQL (SQL_MODE=ORACLE) pour assurer la compatibilité avec un sous-ensemble d'Oracle PL/SQL, une extension procédurale du langage de requête structuré (SQL). Avec la récente version de MariaDB Community Server 10.6, nous avons poursuivi notre cheminement pour étendre la compatibilité PL/SQL de MariaDB en ajoutant plusieurs fonctions telles que ROWNUM() , ADD_MONTHS() et TO_CHAR() . C'est tellement cool pour un certain nombre de raisons, mais pour commencer, MariaDB reste la seule base de données à implémenter la compatibilité Oracle open source, donc cette fonctionnalité est accessible à tous. Pour vraiment comprendre ce que cela signifie, il est important pour nous de prendre un peu de recul afin que vous sachiez pourquoi nous avons commencé par cette voie.

La puissance de la programmation procédurale et déclarative

En combinant la puissance de manipulation de données du langage SQL avec des capacités procédurales, les développeurs disposent d'une pléthore de nouvelles opportunités passionnantes. En utilisant PL/SQL, les développeurs ont la possibilité d'exécuter des instructions SQL qui se concentrent sur l'approche déclarative de "que faire" tout en ayant également la possibilité de contrôler le flux des opérations, ou "comment le faire".

Attends quoi? OK, considérez les éléments traditionnels suivants Instruction SQL.

SELECT id, name, has_kids FROM friends;

Simple, élégant et efficace. SQL est un beau langage, mais il a ses limites. Par exemple, que se passe-t-il si vous voulez parcourir les résultats renvoyés par le SELECT exécution de l'instruction ? Et puis, lors de l'analyse des résultats, vérifiez chaque résultat à l'aide d'une instruction conditionnelle (par exemple, si has_kids est vrai) afin que vous puissiez effectuer des opérations spécifiques en fonction de ces conditions ?

Note rapide :Ceci est purement hypothétique. Je suis sûr que si vous avez des amis avec des enfants et des amis sans enfants, vous les traitez tous de la même manière. Mais, pour les besoins de cet exemple, disons que vous ne le faites pas. D'ACCORD? D'accord, cool.

Mais avec toutes ces itérations et conditions qui se produisent, il est possible que vous rencontriez une erreur. Ne serait-il pas agréable de pouvoir gérer les erreurs (c'est-à-dire les exceptions) directement du côté de la base de données, sans avoir à renvoyer d'abord les résultats d'origine au code de l'application à traiter ? Eh bien, c'est tout simplement dommage, car vous utilisez du SQL ordinaire, et rien de tout cela n'est possible.

N'ayez pas peur ! Au lieu de cela, venez avec moi dans le monde merveilleux de PL/SQL !

Grâce à l'utilisation de quelque chose connu sous le nom de bloc PL/SQL, vous pouvez combiner le SQL que vous connaissez et aimez avec les capacités procédurales qui vous permettront de contrôler le flux des opérations à l'aide de fonctionnalités telles que la possibilité de déclarer des variables, de gérer des conditions, de boucler à travers les données, gérer les exceptions, et bien plus encore.

Les blocs PL/SQL sont gérés dans MariaDB Server, où les instructions SQL et procédurales sont analysées et exécutées en conséquence.

Plutôt cool, non ? C'est tellement mieux ! Mais revenons à notre exemple précédent. Vous pouvez utiliser un seul bloc PL/SQL pour accomplir tout ce que j'ai indiqué précédemment.

Par exemple :

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;

En savoir plus

Des trucs puissants, non? Eh bien, ce billet de blog n'est vraiment que la pointe de l'iceberg. Un petit quelque chose pour vous mettre en appétit, si vous voulez. Mais si vous souhaitez en savoir plus, je vous recommande fortement de regarder un webinaire que nous avons récemment présenté, MariaDB et PL/SQL :combiner la puissance de SQL et les instructions procédurales. Dans ce document, nous expliquons beaucoup plus en détail pourquoi nous nous sommes donné pour mission d'ajouter et d'étendre la prise en charge PL/SQL et nous incluons une variété d'exemples, ainsi qu'une démonstration de codage en direct, qui vous donnent un aperçu de première main de la façon dont vous pouvez utiliser PL/SQL dans MariaDB ! Bon codage, amis !