Différence : 1. Les procédures stockées sont utilisées pour effectuer des opérations ou des tâches spécifiques dans la base de données, tandis que les fonctions sont utilisées pour des données spécifiques ; 2. L'en-tête du programme de la procédure stockée est déclaré avec PROCEDURE, et aucun type de retour n'est requis lors de la déclaration. , tandis que le programme de la fonction utilise FUNCTION dans la déclaration d'en-tête et décrit le type de retour lors de la déclaration.
L'environnement d'exploitation de ce tutoriel : système Windows 7, version Oracle 11g, ordinateur Dell G3.
Stored Procedure
Stored Procedure (Stored Procedure) est un ensemble d'instructions SQL permettant d'exécuter des fonctions spécifiques, qui sont compilées et stockées dans la base de données. L'utilisateur exécute une procédure stockée en spécifiant son nom et en donnant des paramètres (si la procédure stockée a des paramètres). Les procédures stockées constituent un objet important dans la base de données et toute application de base de données bien conçue doit utiliser des procédures stockées. Une procédure stockée est une procédure écrite par un contrôle de flux et des instructions SQL. Cette procédure est compilée, optimisée et stockée dans le serveur de base de données. Elle ne doit être appelée que lorsque le programme d'application l'utilise. Dans ORACLE, plusieurs procédures liées peuvent être combinées pour former un package de programme.
Avantages :
1. Les procédures stockées ne sont compilées que lorsqu'elles sont créées. Il n'est pas nécessaire de recompiler chaque fois que la procédure stockée est exécutée à l'avenir. Généralement, les instructions SQL sont compilées une fois à chaque exécution. Ainsi, l'utilisation de procédures stockées peut améliorer la vitesse d'exécution de la base de données.
2. Lors de l'exécution d'opérations complexes sur la base de données (telles que Mettre à jour, Insérer, Requête et Supprimer sur plusieurs tables), cette opération complexe peut être encapsulée dans une procédure stockée et utilisée conjointement avec le traitement des transactions fourni par la base de données.
3. Les procédures stockées peuvent être réutilisées, ce qui peut réduire la charge de travail des développeurs de bases de données.
4. Haute sécurité, vous pouvez définir que seul un certain utilisateur a le droit d'utiliser le processus stocké spécifié.
La différence entre les procédures stockées et les fonctions
La plus grande différence entre les deux est :
1). Les fonctions renvoient toujours des données à l'appelant et ne renvoient généralement qu'une seule valeur ; (procédures) ne renvoient pas directement de données, mais peuvent modifier les valeurs des paramètres de sortie, qui peuvent être approximativement considérées comme des valeurs renvoyées, et il n'y a pas de limite au nombre de valeurs des paramètres de sortie d'une procédure stockée.
Du point de vue général de l'application, si vous n'avez pas besoin d'une valeur de retour ou si vous avez besoin de plusieurs valeurs de retour, utilisez une procédure stockée. Si vous n'utilisez qu'une seule valeur de retour, utilisez une fonction.
2. Il ne peut y avoir que des instructions DDL (telles que select, etc.) dans la définition de fonction ; les instructions DML sont principalement utilisées dans les procédures (lors de l'exécution d'opérations complexes sur la base de données, telles que Mettre à jour, Insérer, Requête et Supprimer sur plusieurs tableaux).
Si vous souhaitez utiliser le jeu de résultats de sélection, vous devez utiliser un curseur
Procédures stockées |
Fonction |
Utilisé pour effectuer des opérations ou des tâches spécifiques dans la base de données (telles que l'insertion, la suppression, etc.) |
Utilisé pour des données spécifiques (telles que les valeurs de retour des requêtes) |
Le programme l'instruction d'en-tête utilise PROCEDURE |
La déclaration d'en-tête du programme utilise FUNCTION |
Le type de retour n'est pas requis lors de la déclaration d'en-tête du programme |
Le type de retour doit être décrit lorsque la déclaration d'en-tête du programme est effectuée, et le bloc PL/SQL doit inclure au moins une instruction RETURN valide |
Vous pouvez utiliser les modes de paramètres IN/OUT/IN OUT 3 |
Vous pouvez utiliser les modes de paramètres IN/OUT/IN OUT 3 |
Peut être exécuté en tant qu'instruction PL/SQL indépendante |
Elle ne peut pas être exécutée indépendamment et doit être appelée dans le cadre d'une expression |
Peut renvoyer zéro ou plusieurs valeurs via OUT/IN OUT |
L'instruction RETURN renvoie une valeur, et la valeur est cohérente avec la partie déclaration, les variables peuvent également être extraites via les paramètres de type OUT |
Les procédures stockées ne peuvent pas être appelées dans les instructions SQL (DML ou SELECT) |
Les fonctions peuvent être appelées dans des instructions SQL (DML ou SELECT) |
Exemples réels
1. Fonction
(1) Créer une fonction
create or replace function get_salary( dept_no number, emp_count **out** number) return number IS v_sum number;begin ...exception ...end get_salary
(2) Appeler une fonction
declare v_num number; v_sum number;begin ...(这里应该出现函数名表示调用)end
2.
(2 ) Appelez la procédure stockéeSyntaxe d'appel :1), exécutezcreate or replace procedure pro_demo( dept_no number default 10, sal_sum out number, emp_count out number) IS begin ... exception ... end proc_demo;
3. Procédure stockée locale
En PL/SQL, vous pouvez également créer une procédure stockée locale dans le bloc de déclaration sans utiliser le mot-clé create. Le but est : pas besoin de stocker la procédure stockée. procédure dans la base de données Afin d'éviter les problèmes causés lors du changement de base de données, son principal scénario d'utilisation consiste à utiliser temporairement une procédure stockée au lieu de la réutiliser plusieurs fois dans le futur.
Exemple :declare v_num number; v_sum number(8,2); begin procedure pro_demo(dept_no=>1,sal_num=>900,emp_count=>10)(这里出现存储过程名表示调用,传递参数值用=>) end;
Tutoriel 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!