Maison  >  Article  >  base de données  >  instruction SQL de procédure stockée Oracle

instruction SQL de procédure stockée Oracle

王林
王林original
2023-05-07 19:32:371433parcourir

La base de données Oracle est un système de gestion de base de données efficace doté de fonctions riches et d'une fiabilité extrêmement élevée, et est largement utilisé dans les applications au niveau de l'entreprise. Les procédures stockées Oracle sont une unité de programme spéciale qui peut combiner et stocker plusieurs instructions SQL et est utilisée dans les tâches quotidiennes de traitement des données. Cet article explique comment écrire des instructions SQL dans des procédures stockées Oracle.

1. Pourquoi utiliser des procédures stockées

Lors du développement d'applications d'entreprise, nous sommes généralement confrontés à diverses tâches de traitement de données, telles que l'importation de données, le nettoyage de données, la conversion de données, l'analyse de données, etc. Parmi ces tâches, les instructions SQL sont les outils les plus importants et peuvent effectuer diverses opérations de traitement sur les données. Toutefois, pour les tâches de traitement de données complexes, plusieurs instructions SQL peuvent devoir être écrites et ces instructions SQL peuvent être utilisées de manière répétée. Si vous écrivez des instructions SQL manuellement à chaque fois, cela prend non seulement du temps et demande beaucoup de travail, mais des erreurs peuvent également se produire. A ce moment, les procédures stockées peuvent entrer en jeu.

Une procédure stockée est une unité de programme spéciale qui peut regrouper plusieurs instructions SQL pour former une unité logique globale. Les procédures stockées peuvent encapsuler et réutiliser des instructions SQL, simplifiant ainsi l'écriture et la maintenance du code et améliorant l'efficacité du développement. De plus, les procédures stockées peuvent également améliorer les performances de la base de données et réduire le nombre d'interactions avec la base de données, réduisant ainsi la latence du réseau et les pertes de transmission de données.

2. Syntaxe de base des procédures stockées

Les procédures stockées sont écrites en langage PL/SQL. PL/SQL est un langage de programmation dédié aux bases de données Oracle et prend en charge la programmation orientée objet et la programmation procédurale. Une procédure stockée se compose de trois parties : la partie déclaration, la partie corps de la procédure et la partie gestion des exceptions.

  1. Partie déclaration

DECLARE

 (变量声明部分)

BEGIN

 (过程体部分)

EXCEPTION

 (异常处理部分)

END;

Parmi eux, "DECLARE" signifie la partie déclaration, "BEGIN" signifie la partie du corps de la procédure et "EXCEPTION" signifie la partie déclaration. partie de gestion des exceptions. Dans la partie déclaration, vous devez déclarer les variables, curseurs et autres structures de données requises par le processus afin que ces structures de données puissent être utilisées dans le corps du processus.

  1. Partie corps de la procédure

Dans la partie corps de la procédure, des instructions SQL spécifiques et du code PL/SQL seront écrits, et des structures de données telles que des variables et des curseurs déclarés dans la partie déclaration peuvent être utilisées. Dans le corps du processus, vous pouvez utiliser des instructions SQL pour accéder à des structures de données telles que des tables et des vues dans la base de données, et vous pouvez utiliser des objets curseur pour stocker les jeux de résultats de requête. Dans le même temps, les structures de flux de contrôle peuvent également être utilisées dans le corps du processus pour mettre en œuvre des opérations telles que des boucles et des branches. Par exemple :

BEGIN

 --声明变量
 DECLARE 
      var1 VARCHAR2(20);
 BEGIN
      --执行sql语句并存储结果
      SELECT column1 INTO var1
      FROM table1
      WHERE id=1;
      --输出结果
      dbms_output.put_line(var1);
 END;

END;

Dans le code ci-dessus, nous avons déclaré une variable nommée var1 dans la section de déclaration et utilisé l'instruction SELECT dans le corps de la procédure pour interroger les données avec l'identifiant 1 dans la table1, et attribuer le résultat de la requête à la variable var1, et enfin afficher le résultat. Dans le corps du processus, dbms_output.put_line() est également appelé pour afficher les résultats.

  1. Section de gestion des exceptions

La section de gestion des exceptions est utilisée pour gérer les exceptions qui peuvent survenir lors de l'exécution. Dans la section de gestion des exceptions, le mot-clé « EXCEPTION » est généralement utilisé pour définir le type d'exception, et le mot-clé « WHEN » est utilisé pour spécifier spécifiquement le type d'exception et l'opération de traitement correspondante. Par exemple :

BEGIN

 --声明变量
 DECLARE 
      var1 VARCHAR2(20);
 BEGIN
      --执行sql语句并存储结果
      SELECT column1 INTO var1
      FROM table1
      WHERE id=1;
      --输出结果
      dbms_output.put_line(var1);
 EXCEPTION
      WHEN no_data_found THEN
           dbms_output.put_line('查询结果为空');
      WHEN others THEN
           dbms_output.put_line('发生未知异常');
 END;

END;

Dans le code ci-dessus, lorsque l'instruction SELECT n'interroge aucun résultat, l'exception no_data_found sera déclenchée et le message d'invite « le résultat de la requête est vide » sera affiché lorsque autre ; des exceptions inconnues se produisent, déclenchera d'autres exceptions et affichera le message d'invite "Une exception inconnue s'est produite".

3. Exemple d'application de procédures stockées

Ce qui suit est un exemple pratique montrant comment utiliser des procédures stockées pour gérer des tâches de traitement de données dans des applications d'entreprise :

DECLARE

 --声明变量和游标对象
 v_empno NUMBER; --员工编号
 v_ename VARCHAR2(20); --员工姓名
 v_sal NUMBER; --员工工资
 v_count NUMBER := 0; --统计变量
 CURSOR c_emp IS SELECT * FROM emp;

BEGIN

 FOR emp_rec IN c_emp LOOP
      v_empno := emp_rec.empno;
      v_ename := emp_rec.ename;
      v_sal   := emp_rec.sal;
      
      --如果工资低于2000,将工资增加1000
      IF v_sal<2000 THEN
           UPDATE emp SET sal=sal+1000 WHERE empno=v_empno;
           v_count := v_count + 1;
      END IF;
 END LOOP;
 
 --输出处理结果
 dbms_output.put_line('共更新了'||v_count||'行数据');

EXCEPTION

 WHEN others THEN
      dbms_output.put_line('发生异常:'||SQLERRM);

END;

Dans le code ci-dessus, nous avons d'abord déclaré plusieurs variables et un objet curseur, et utilisé une boucle FOR dans le corps du processus pour parcourir tous les enregistrements de la table emp. Pour chaque enregistrement, déterminez si le salaire de l'employé est inférieur à 2000, si c'est le cas, augmentez son salaire de 1000, et enfin renvoyez le nombre de lignes mises à jour avec succès. Dans la section Gestion des exceptions, gérez les situations d’exception qui peuvent survenir. Cet exemple montre simplement comment utiliser des procédures stockées pour écrire des instructions SQL afin de traiter des données. Dans les applications réelles, des opérations plus complexes peuvent être effectuées en fonction des besoins.

Résumé :

Cet article présente brièvement le concept et la syntaxe de base des procédures stockées Oracle, en particulier comment écrire des instructions SQL pour implémenter des tâches de traitement de données. Les procédures stockées peuvent encapsuler et réutiliser des instructions SQL, simplifiant ainsi l'écriture et la maintenance du code et améliorant l'efficacité du développement. De plus, les procédures stockées peuvent également améliorer les performances de la base de données et réduire le nombre d'interactions avec la base de données, réduisant ainsi la latence du réseau et les pertes de transmission de données. Dans le développement réel, nous devons écrire des procédures stockées en fonction des besoins réels et prêter attention à la gestion des exceptions. L'utilisation de procédures stockées pour écrire des instructions SQL est une pratique recommandée pour les développeurs débutants et expérimentés.

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