Maison > base de données > Oracle > Comment créer et utiliser des procédures et fonctions stockées dans PL / SQL?

Comment créer et utiliser des procédures et fonctions stockées dans PL / SQL?

Emily Anne Brown
Libérer: 2025-03-13 13:12:17
original
224 Les gens l'ont consulté

Création et utilisant des procédures et fonctions stockées dans PL / SQL

La création et l'utilisation de procédures et de fonctions stockées dans PL / SQL implique plusieurs étapes de clé. Tout d'abord, vous devez comprendre la syntaxe de base. Les procédures stockées sont des blocs de code PL / SQL qui effectuent une tâche spécifique, impliquant souvent plusieurs instructions SQL. Ils ne renvoient pas directement une valeur. Les fonctions, en revanche, sont similaires mais renvoient toujours une seule valeur.

Création d'une procédure stockée:

 <code class="sql">CREATE OR REPLACE PROCEDURE my_procedure (param1 IN NUMBER, param2 OUT VARCHAR2) AS variable1 NUMBER := 0; BEGIN -- Your PL/SQL code here SELECT COUNT(*) INTO variable1 FROM my_table WHERE column1 = param1; param2 := 'Record count: ' || variable1; EXCEPTION WHEN OTHERS THEN param2 := 'Error occurred'; END; /</code>
Copier après la connexion

Cet exemple montre une procédure my_procedure qui prend un nombre en entrée ( param1 ) et renvoie un message de chaîne via un paramètre de sortie ( param2 ). Le / à la fin est une partie cruciale de la syntaxe dans SQL * Plus ou SQL Developer pour exécuter la commande.

Création d'une fonction:

 <code class="sql">CREATE OR REPLACE FUNCTION my_function (param1 IN NUMBER) RETURN NUMBER AS variable1 NUMBER := 0; BEGIN SELECT SUM(column2) INTO variable1 FROM my_table WHERE column1 = param1; RETURN variable1; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 0; END; /</code>
Copier après la connexion

Cette fonction my_function prend un nombre en entrée et renvoie la somme d'une colonne à partir d'une table. Notez l'instruction RETURN , essentielle pour les fonctions. Le bloc EXCEPTION gère le cas où aucune donnée n'est trouvée.

Utilisation de procédures et de fonctions stockées:

Les procédures stockées sont appelées en utilisant l'instruction EXECUTE ou dans d'autres blocs PL / SQL:

 <code class="sql">EXECUTE my_procedure(10, :output_variable); DBMS_OUTPUT.PUT_LINE(:output_variable);</code>
Copier après la connexion

Les fonctions peuvent être appelées directement dans les instructions SQL ou les blocs PL / SQL:

 <code class="sql">SELECT my_function(20) FROM dual; SELECT column1, my_function(column1) FROM my_table;</code>
Copier après la connexion

Meilleures pratiques pour optimiser les procédures et fonctions stockées PL / SQL pour les performances

L'optimisation de PL / SQL pour les performances implique plusieurs stratégies axées sur les pratiques de codage SQL et PL / SQL efficaces.

  • Minimiser la commutation de contexte: Réduisez le nombre de fois que votre code bascule entre le moteur PL / SQL et le moteur SQL. Ceci est réalisé en récupérant des données en vrac en utilisant des instructions FORALL plutôt que des instructions INSERT individuelles ou UPDATE dans des boucles.
  • Utilisez des opérations en vrac: utilisez pour les FORALL pour les opérations DML en vrac. Cela réduit considérablement les frais généraux des commutateurs de contexte répétés.
  • Récupération des données efficace: Utilisez approprié WHERE les clauses pour filtrer efficacement les données. Évitez d'utiliser SELECT * et spécifiez uniquement les colonnes nécessaires.
  • Optimisation d'index: assurez-vous que les index appropriés sont créés sur les tableaux auxquels votre code PL / SQL accède. Les index accélérent considérablement la récupération des données.
  • Évitez les curseurs lorsque cela est possible: les curseurs peuvent être des goulots d'étranglement des performances. Si possible, utilisez des opérations basées sur des ensembles (par exemple, SELECT INTO ) au lieu de curseurs explicites. Si vous devez utiliser les curseurs, envisagez d'utiliser des curseurs implicites le cas échéant ou d'optimiser la récupération du curseur.
  • Utilisation du type de données approprié: utilisez les types de données appropriés pour éviter les conversions implicites, ce qui peut avoir un impact sur les performances.
  • Débogage et profilage: utilisez PL / SQL Profiler ou d'autres outils de débogage pour identifier les goulots d'étranglement des performances. Cela permet des efforts d'optimisation ciblés.
  • Revue du code: les avis réguliers du code aident à identifier les domaines à améliorer et à prévenir l'introduction de problèmes de performances.

Gestion des exceptions et des erreurs dans les procédures et fonctions stockées PL / SQL

La gestion des erreurs est cruciale pour le code PL / SQL robuste. Le bloc EXCEPTION vous permet de gérer gracieusement les erreurs sans écraser toute l'application.

 <code class="sql">BEGIN -- Your PL/SQL code here EXCEPTION WHEN NO_DATA_FOUND THEN -- Handle NO_DATA_FOUND exception DBMS_OUTPUT.PUT_LINE('No data found.'); WHEN OTHERS THEN -- Handle other exceptions DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM); -- Log the error for later analysis END;</code>
Copier après la connexion

Cet exemple démontre un bloc EXCEPTION de base. La clause WHEN OTHERS attrape toutes les exceptions non perdues. SQLERRM fournit le message d'erreur. Il est essentiel de enregistrer les erreurs à des fins de débogage et de surveillance. La gestion des exceptions plus spécifique est préférable à un général WHEN OTHERS bloquent pour fournir des messages d'erreur plus informatifs et faciliter un meilleur débogage. Envisagez d'utiliser des exceptions personnalisées pour des erreurs d'application spécifiques.

Différences clés entre les procédures et fonctions stockées PL / SQL, et quand utiliser chacun

La principale différence réside dans leurs valeurs de retour:

  • Procédures stockées: ne renvoyez pas les valeurs directement. Ils effectuent des actions et peuvent modifier les données, mais toute sortie est généralement via des paramètres ou en modifiant les tables de base de données.
  • Fonctions: Renvoyez toujours une seule valeur. Ils sont souvent utilisés pour les calculs ou la récupération de données spécifiques. Ils peuvent être utilisés dans les instructions SQL.

Quand utiliser les procédures stockées:

  • Effectuer des opérations de base de données complexes impliquant plusieurs instructions SQL.
  • Mise à jour ou modification des données dans plusieurs tables.
  • Effectuer des tâches qui ne nécessitent pas une seule valeur de retour.
  • Création d'unités de code réutilisables pour diverses opérations de base de données.

Quand utiliser les fonctions:

  • Calcul d'une valeur unique en fonction des paramètres d'entrée.
  • Récupération d'une seule information à partir de la base de données.
  • Utilisation du résultat directement dans les instructions SQL.
  • Création d'unités réutilisables de code pour les calculs ou la récupération de données.

Essentiellement, utilisez des procédures pour les actions et les fonctions pour les calculs et la récupération des données. Le choix dépend de la tâche spécifique que vous devez accomplir. Si vous devez renvoyer une seule valeur, une fonction est le meilleur choix. Si vous effectuez une série d'actions sans une seule valeur de retour, une procédure est plus appropriée.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal