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

Curseurs de référence forts avec type de données d'enregistrement basé sur une table

Curseurs de référence forts avec type de données d'enregistrement basé sur une table

Comme nous l'avons appris dans l'introduction aux curseurs de référence, il existe deux types de curseurs de référence PL/SQL dans la base de données Oracle.

  1. Curseurs de référence forts et
  2. Curseurs de référence faible

Nous explorerons tous les concepts de ces deux types de curseurs de référence dans cette série. Avec ce blog, nous commencerons par le premier qui est les curseurs Strong Ref avec un type de données d'enregistrement basé sur une table et avec un type de données d'enregistrement défini par l'utilisateur.

Qu'est-ce que les curseurs de référence forte PL/SQL dans la base de données Oracle ?

Un curseur de référence qui a un type de retour fixe est appelé un curseur de référence fort dans la base de données Oracle. En raison du type de retour fixe, les curseurs de référence forts ne peuvent être utilisés que de manière sélective. Par exemple avec ces instructions SELECT qui renvoient le résultat dont le type de données correspond à celui que vous avez fixé lors de la déclaration du curseur.

Pouvons-nous utiliser Strong Ref Cursor avec n'importe quelle instruction SELECT dans Oracle Database ?

Non, nous ne pouvons pas utiliser Strong Ref Cursors avec une instruction SELECT. Cela est dû au "type de retour" fixe.

Néanmoins, il ne peut être utilisé qu'avec les instructions SELECT qui renvoient le résultat dont le type de données correspond à la "clause de retour" du curseur.

Pouvons-nous utiliser n'importe quel type de données PL/SQL pour déclarer notre Strong Ref Cursor ?

Non, nous ne pouvons pas. De plus, le type de retour d'un curseur de référence forte doit toujours être un type de données d'enregistrement. Il peut s'agir soit d'un type de données d'enregistrement basé sur une table, soit d'un type de données d'enregistrement défini par l'utilisateur.

Exemple de curseurs de référence forts avec un type de données d'enregistrement basé sur une table

Écrivons un exemple. Ici, nous allons créer un curseur de référence fort avec un type de données d'enregistrement basé sur une table.

 SET SERVEROUTPUT ON
 DECLARE
    	/*Create Ref Pointer Type*/
	TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;
	/*Create Cursor Variable*/
	cur_var my_RefCur;
	rec_var     employees%ROWTYPE;
 BEGIN
	OPEN cur_var FOR SELECT * FROM employees WHERE employee_id = 100;
	FETCH cur_var INTO rec_var;
	CLOSE cur_var;
	DBMS_OUTPUT.PUT_LINE ('Employee '||rec_var.first_name||' has salary '||rec_var.salary||'.');
END;
/

La création d'un curseur de référence est un processus en deux étapes.

Créez un type de pointeur de référence.

Nous devons d'abord créer un type de pointeur ref. Ainsi, en utilisant l'instruction TYPE, nous créons un pointeur Ref Cursor Type comme dans le code ci-dessus. Dans cette instruction, vous écrivez d'abord le mot-clé TYPE suivi du nom de votre curseur de référence. Ensuite, vous devez écrire une phrase réservée IS REF CURSOR. Il indiquera au compilateur que nous créons un type qui est REF CURSOR. Ensuite, vous devez spécifier la clause RETURN.

Par exemple

TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;

Créer une variable de curseur

Dans la deuxième étape, nous créons une variable de curseur. Afin de créer une variable de curseur, vous devez d'abord écrire le nom de votre variable suivi du nom de votre curseur de référence. Par la suite, cette variable sera utilisée pour faire référence au curseur de référence sur lequel elle est créée.

Par exemple

cur_var my_RefCur;

Outre la variable de curseur dans le code ci-dessus, nous avons également une variable supplémentaire. Il s'agit à nouveau d'un type de données d'enregistrement basé sur une table et conçu à l'aide de la table "Employés". De plus, cette variable contiendra les données extraites du curseur.

rec_var     employees%ROWTYPE;

Section d'exécution

Dans la section d'exécution de notre code, nous avons quatre instructions exécutables. Laissez-moi vous les expliquer.

  1. OPEN FOR instruction

La première instruction est l'instruction OPEN FOR. Il associe l'instruction SELECT à la variable du curseur et ouvre le curseur pour l'instruction. En outre, il recherche également toutes les ressources nécessaires au traitement de l'instruction SELECT.

  1. Instruction FETCH

Comme nous l'avons vu dans le didacticiel PL/SQL 26. Le processus de récupération des données à partir du curseur est appelé extraction. Par conséquent, nous récupérons ici les données du curseur de référence dans la variable d'enregistrement "Rec_Var".

  1. Fermer la déclaration

Une fois que nous en avons terminé avec notre curseur, il est conseillé de le fermer afin que notre moteur / serveur Oracle puisse abandonner toutes les ressources qui lui sont associées. C'est exactement ce que nous avons fait dans la troisième déclaration. En utilisant le mot-clé CLOSE suivi de la variable de curseur, nous avons fermé notre curseur de référence.

  1. Déclaration de sortie

La quatrième instruction est une instruction DBMS_OUTPUT. Il affichera le prénom et le salaire de l'employé avec l'identifiant d'employé 100.

Vous pouvez regarder le tutoriel PL/SQL 33 afin d'apprendre le fonctionnement d'une variable d'enregistrement basée sur une table.

Par conséquent, en conclusion…

Dans le code ci-dessus, nous avons créé un curseur de référence fort PL/SQL avec le nom "my_RefCur" qui renverra un type de données d'enregistrement basé sur une table de résultats. De plus, ce type de données d'enregistrement basé sur une table est pris en charge sur la table Employees du schéma HR. Ainsi, avant d'exécuter ce programme, nous devons nous assurer que nous sommes connectés au schéma RH de notre base de données.

De plus, si vous apprenez mieux en regardant une vidéo, en voici une pour vous. Allez-y et vérifiez-le.

Il s'agit du didacticiel sur la création de curseurs de référence forts PL/SQL à l'aide d'un type de données d'enregistrement basé sur une table dans la base de données Oracle. J'espère que vous avez appris quelque chose de nouveau. De plus, assurez-vous de partager ce blog sur vos réseaux sociaux avec vos amis.

Merci de votre visite. Restez à l'écoute car dans le prochain didacticiel, nous apprendrons à créer un curseur de référence fort avec une variable d'enregistrement définie par l'utilisateur.

Bonne journée !