Maison  >  Article  >  base de données  >  Quel est le curseur de la procédure stockée Oracle ?

Quel est le curseur de la procédure stockée Oracle ?

WBOY
WBOYoriginal
2022-02-28 11:05:398191parcourir

Dans Oracle, un curseur est un espace de travail mémoire de SQL, défini sous la forme d'une variable par le système ou l'utilisateur, utilisé pour stocker temporairement des blocs de données extraits de la base de données après le transfert des données de la base de données vers la variable curseur ; , l'application décompose ensuite les données requises à partir de la variable du curseur et les traite.

Quel est le curseur de la procédure stockée Oracle ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.

Qu'est-ce que le curseur de la procédure stockée Oracle ?

1. J'ai vu un paragraphe qui explique très bien le concept, comme suit :

Un curseur est un espace mémoire de travail de SQL, défini sous la forme d'une variable par le système ou l'utilisateur. Le but d'un curseur est de stocker temporairement des blocs de données extraits de la base de données. Dans certains cas, il est nécessaire de transférer les données des tables stockées sur disque vers la mémoire de l'ordinateur pour les traiter, et enfin d'afficher les résultats du traitement ou de les réécrire dans la base de données. De cette façon, la vitesse de traitement des données sera améliorée, sinon l'échange fréquent de données sur disque réduira l'efficacité.

Il existe deux types de curseurs : les curseurs explicites et les curseurs implicites. L'instruction de requête SELECT...INTO... utilisée dans le programme susmentionné ne peut extraire qu'une seule ligne de données de la base de données à la fois. Pour cette forme de requête et d'opération DML, le système utilisera un curseur implicite. Mais si vous souhaitez extraire plusieurs lignes de données, le programmeur doit définir un curseur explicite et le traiter via des instructions liées au curseur. Un curseur explicite correspond à une instruction SELECT qui renvoie plusieurs lignes et colonnes.

Une fois le curseur ouvert, les données sont transférées de la base de données vers la variable du curseur, puis l'application décompose les données requises de la variable du curseur et les traite. Dans nos opérations d'insertion, de mise à jour, de suppression et de sélection de valeur dans une variable, nous utilisons des curseurs implicites.

Propriétés implicites du curseur Signification du type de valeur de retour :

  • SQL%ROWCOUNT Type entier Représente le nombre de lignes de données exécutées avec succès par l'instruction DML

  • SQL%FOUND La valeur booléenne TRUE représente l'insertion, la suppression, la mise à jour ou une seule ligne L'opération de requête est réussie

  • SQL%NOTFOUND Le type booléen est opposé à la valeur de retour de l'attribut SQL%FOUND

  • SQL%ISOPEN Type booléen True lors de l'exécution DML, false après la fin

2. Curseur implicite :

create or replace procedure prc_example (epo in number) as
BEGIN  
        UPDATE emp SET sal=sal+100 WHERE empno=epo;   
         IF SQL%FOUND THEN    
        DBMS_OUTPUT.PUT_LINE('成功修改雇员工资!');   
        COMMIT;    
        ELSE  
        DBMS_OUTPUT.PUT_LINE('修改雇员工资失败!');   
         END IF;    
        END; 
declare
e_number number;
begin
e_number:=7788;
prc_example(e_number);
 end;

3. Afficher le curseur :

Utilisez le curseur pour interroger tous les noms d'employés portant le numéro 10

create or replace procedure prc_example is
begin
    declare
    cursor emp_sor  is select ename,sal from emp where deptno=10;  
    cname emp.ename%type;     
    csal emp.sal%type;
 begin
   open emp_sor;       
   loop        
   fetch emp_sor into cname,csal;  --取游标的值给变量。             
   dbms_output.put_line('ename:'||cname);        
   exit when emp_sor%notfound;        
  end loop;         
  close emp_sor;     
 end;
end;

Tutoriel recommandé : "Tutoriel vidéo Oracle"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn