Maison  >  Article  >  base de données  >  Quelle est la différence entre les procédures stockées et les fonctions dans Oracle

Quelle est la différence entre les procédures stockées et les fonctions dans Oracle

青灯夜游
青灯夜游original
2022-02-22 18:38:558838parcourir

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.

Quelle est la différence entre les procédures stockées et les fonctions dans Oracle

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

La différence entre les procédures stockées et les fonctions

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)

Quelle est la différence entre les procédures stockées et les fonctions dans Oracle

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ée

Syntaxe d'appel :

1), exécutez ;

2), exécutez ;

3), appelez directement dans le bloc d'instructions PL/SQL.

Par exemple :

create 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 recommandé : "

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!

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