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

Comment créer PL/SQL SYS_REFCURSOR dans la base de données Oracle

PL/SQL SYS_REFCURSOR dans la base de données Oracle

Comme nous l'avons appris dans l'introduction au curseur de référence, il existe trois types de curseur de référence PL/SQL dans Oracle Database.

  1. Curseur de référence fort
  2. Curseur de référence faible et
  3. SYS_REFCURSOR

Jusqu'à présent, dans cette série, nous avons couvert les concepts de curseur de référence fort et faible. Le seul type de curseur qui n'a pas encore été touché est PL/SQL SYS_REFCURSOR dans Oracle Database. Ce que nous apprendrons dans ce blog.

Qu'est-ce que PL/SQL SYS_REFCURSOR ?

SYS_REFCURSOR est un curseur de référence faible prédéfini qui est intégré au logiciel de base de données Oracle.

En quoi le fait d'être un curseur de référence prédéfini nous aide-t-il ?

SYS_REFCURSOR est un curseur de référence faible prédéfini, ce qui signifie que nous n'avons pas à le définir dans notre code comme nous l'avons fait avec le curseur de référence faible explicite dans le didacticiel précédent. Comme nous l'avons appris dans ce didacticiel, la création d'un curseur de référence faible est un processus en deux étapes. Vous devez d'abord créer le "type de curseur de référence faible", puis vous devez créer "une variable de curseur" à l'aide de ce curseur de référence.

Lorsque vous utilisez SYS_REFCURSOR, il vous suffit de créer une variable de curseur et rien d'autre. SYS_REFCURSOR minimise complètement la première étape où vous créez le type de curseur de référence faible.

Sys_Refcursor est donc un curseur de référence intégré, où pouvons-nous trouver sa définition ?

Vous pouvez trouver la définition de PL/SQL SYS_REFCURSOR dans un script nommé « stdspec.sql ». Vous pouvez localiser ce script dans le répertoire dont le chemin est le suivant. 

%ORACLE_HOME% \RDBMS\ADMIN\stdspec.sql

La définition de SYS_REFCURSOR ressemblera à ceci :

Quel type de curseur de référence est un SYS_REFCURSOR ?

Comme mentionné ci-dessus dans la définition, un SYS_REFCURSOR est un curseur de référence faible.

Maintenant que vous avez dissipé presque tous les doutes sur SYS_REFCURSOR. Je veux juste vous poser une dernière question.

Info :Il n'y a pas d'espace entre REF et CURSOR. Il s'agit d'un seul mot "RefCursor".
Mauvais :SYS_REF CURSOR
Correct :SYS_REFCURSOR

Pourquoi quelqu'un déclarerait-il un curseur de référence faible alors que nous en avons déjà un prédéfini ?

C'est en fait une très bonne question. La réponse à cette question est Non, nous n'avons pas besoin de créer explicitement un curseur de référence faible. Oracle a minimisé la nécessité de créer un curseur de référence faible en livrant SYS_REFCURSOR dans le cadre du package standard depuis Oracle Database 9i, bien que l'option d'en créer un soit toujours disponible.

C'est comme un choix personnel, si quelqu'un veut créer un curseur de référence faible, il le peut. Sinon, ils ont toujours SYS_REFCURSOR à leur disposition. Mon cher ami Steven Feuerstein a fait un très bon article de blog répondant à cette question que vous pouvez lire ici.

Voyons un exemple très simple montrant comment utiliser un PL/SQL SYS_REFCURSOR dans Oracle Database.

Exemple :comment créer PL/SQL SYS_REFCURSOR dans Oracle Database ?

SET SERVEROUTPUT ON;
DECLARE
    --Declare cursor variable of SYS_REFCURSOR type
    cur_var SYS_REFCURSOR;
    
    --Declare variables for holding data
    f_name  employees.first_name%TYPE;
    emp_sal employees.salary%TYPE;
BEGIN
OPEN cur_var FOR SELECT first_name, Salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO f_name, emp_sal;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE(f_name ||' '||emp_sal);
END;
/

Vous pouvez regarder le didacticiel vidéo sur la chaîne YouTube pour une explication détaillée du code ci-dessus.

J'espère que vous avez apprécié la lecture et appris quelque chose de nouveau. Merci de partager ce blog sur vos réseaux sociaux avec vos amis. Merci et bonne journée.