Maison > base de données > Oracle > Comment créer une table temporaire dans une procédure stockée Oracle

Comment créer une table temporaire dans une procédure stockée Oracle

PHPz
Libérer: 2023-04-04 10:14:03
original
7648 Les gens l'ont consulté

Les procédures stockées Oracle sont une méthode de programmation dans la base de données Oracle qui permet aux utilisateurs d'écrire du code et de le stocker dans la base de données afin qu'il puisse être utilisé à plusieurs reprises en cas de besoin. Les procédures stockées peuvent exécuter un ensemble d'instructions SQL ou un autre code de programme, accepter des paramètres d'entrée et renvoyer des résultats de sortie.

Dans les procédures stockées Oracle, les tables temporaires sont une fonction très pratique. Elles peuvent être utilisées pour stocker des collections de données temporaires pour un traitement ultérieur. Cet article approfondira l'implémentation de tables temporaires dans les procédures stockées Oracle.

1. Introduction aux tables temporaires dans les procédures stockées Oracle

Dans Oracle, une table temporaire est un objet similaire à une table normale, mais elle n'existe que dans la session en cours et sera automatiquement supprimée à la fin de la session. La table temporaire est une structure de stockage temporaire fournie par la base de données Oracle, qui peut facilement stocker certaines données générées temporairement pour un traitement ultérieur. Contrairement aux tables ordinaires, les données des tables temporaires ne seront pas conservées sur le disque.

Oracle prend en charge deux types de tables temporaires : les tables temporaires globales et les tables temporaires locales. Une table temporaire globale est une table temporaire qui peut être partagée par plusieurs sessions, tandis qu'une table temporaire locale n'est accessible que par la session qui l'a créée. Étant donné que des tables temporaires globales existent dans la base de données, elles sont plus pratiques que les tables temporaires locales dans certains scénarios.

Dans le processus de stockage, des tables temporaires peuvent être utilisées pour stocker des ensembles de résultats intermédiaires afin de réduire le nombre de lectures et d'écritures de données et d'accélérer le traitement. Dans une procédure stockée complexe, l'ensemble de résultats intermédiaire peut devoir être traité plusieurs fois. Afin d'éviter un accès fréquent à la base de données, il est judicieux de stocker l'ensemble de résultats intermédiaire dans une table temporaire.

2. Comment créer des tables temporaires dans les procédures stockées Oracle

La façon de créer des tables temporaires dans les procédures stockées Oracle est similaire à la création de tables ordinaires. Ajoutez simplement "##" ou "#" comme préfixe avant le nom de la table. Parmi eux, "##" signifie créer une table temporaire globale et "#" signifie créer une table temporaire locale.

Par exemple, le code suivant montre comment créer une table temporaire globale :

CREATE GLOBAL TEMPORARY TABLE ##TEMP_TABLE
(
    ID NUMBER(10),
    NAME VARCHAR2(100)
) ON COMMIT PRESERVE ROWS;
Copier après la connexion

Dans le code ci-dessus, "ON COMMIT PRESERVE ROWS" signifie conserver toutes les données de ligne dans la table lorsque la transaction est validée, plutôt que d'effacer la données dans le tableau.

Ce qui suit est un exemple de création d'une table temporaire locale :

CREATE GLOBAL TEMPORARY TABLE #TEMP_TABLE
(
    ID NUMBER(10),
    NAME VARCHAR2(100)
) ON COMMIT PRESERVE ROWS;
Copier après la connexion

Bien sûr, vous pouvez également ajouter des index, des contraintes, etc. à la définition de la table pour répondre aux besoins réels.

3. Utilisation de tables temporaires dans les procédures stockées Oracle

Dans les procédures stockées Oracle, vous devez faire attention aux points suivants lors de l'utilisation de tables temporaires :

  1. Avant d'utiliser des tables temporaires dans des procédures stockées, vous devez d'abord créer la table. . Vous pouvez le stocker dans effectué au début du processus.
  2. Une fois l'exécution de la procédure stockée terminée, les données de la table temporaire doivent être effacées, ce qui peut être réalisé à l'aide de l'instruction DELETE.
  3. Lorsque la procédure stockée se termine, la table temporaire globale sera automatiquement supprimée et la table temporaire locale devra être supprimée via l'instruction DROP TABLE.

L'exemple suivant démontre l'utilisation de tables temporaires dans les procédures stockées Oracle :

CREATE OR REPLACE PROCEDURE PROCESS_DATA AS
BEGIN
    -- 创建全局临时表
    CREATE GLOBAL TEMPORARY TABLE ##TEMP_TABLE
    (
        ID NUMBER(10),
        NAME VARCHAR2(100)
    ) ON COMMIT PRESERVE ROWS;
    
    -- 插入数据到临时表中
    INSERT INTO ##TEMP_TABLE(ID, NAME) VALUES (1, '张三');
    INSERT INTO ##TEMP_TABLE(ID, NAME) VALUES (2, '李四');
    INSERT INTO ##TEMP_TABLE(ID, NAME) VALUES (3, '王五');
    
    -- 处理临时表中的数据
    FOR item IN (SELECT * FROM ##TEMP_TABLE)
    LOOP
        DBMS_OUTPUT.PUT_LINE(item.ID || ' ' || item.NAME);
    END LOOP;
    
    -- 清除临时表中的数据
    DELETE FROM ##TEMP_TABLE;

    -- 删除全局临时表
    DROP TABLE ##TEMP_TABLE;
END;
Copier après la connexion

Dans l'exemple ci-dessus, une table temporaire globale ##TEMP_TABLE est d'abord créée et certaines données sont insérées. Ensuite, les données de la table temporaire sont traitées, le contenu de la table temporaire est effacé et enfin la table temporaire est supprimée.

Résumé :

Dans les procédures stockées Oracle, les tables temporaires sont un moyen pratique et efficace de traiter les données. En utilisant des tables temporaires, vous pouvez éviter les accès fréquents à la base de données et améliorer la vitesse d'exécution des procédures stockées. Lorsque vous utilisez une table temporaire, vous devez veiller à effacer les données de la table et supprimer manuellement la table si nécessaire pour éviter certaines exceptions inattendues.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal