IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

[Oracle 9i] Problème de suppression d'une séquence dans un bloc PL/SQL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut [Oracle 9i] Problème de suppression d'une séquence dans un bloc PL/SQL
    Bonjour à tous,

    J'ai un soucis avec la suppression d'une séquence au sein d'un bloc PL/SQL sur une base Oracle 9i.

    Mon bloc PL/SQL doit ré-initialiser la valeur courante d'une séquence suite à un import dans une table de données.
    Pour cela, je récupère l'id max dans la table, je drop la séquence pour la re-créer après. Or, à l'exécution du bloc PL/SQL dans sqlplus, l'erreur suivante m'est retournée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PLS-00103: Symbole "DROP" rencontré à la place d'un des symboles suivants :
    begin case declare end exception exit for goto if loop mod
    null pragma raise return select update while with
    <an identifier> <a double-quoted delimited-identifier>
    <a bind variable> << close current delete fetch lock insert
    open rollback savepoint set sql execute commit forall merge
    <a single-quoted SQL string> pipe
    Voici mon bloc PL/SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    DECLARE
        maxId NUMERIC;
    BEGIN
        -- Réinitialisation de la séquence MA_SEQUENCE
        SELECT MAX(ID) INTO maxId
        FROM MA_TABLE;
     
        maxId := maxId + 1;
     
        DBMS_OUTPUT.PUT_LINE('Max id = ' || maxId);
     
        DROP SEQUENCE MA_SEQUENCE;
     
        CREATE MA_SEQUENCE SEQUENCE_REQ_COLONNE
            START WITH maxId
            MAXVALUE 999999999999999999999999999
            MINVALUE 0
            NOCYCLE
            CACHE 20
            NOORDER;
    END;
    /
     
    COMMIT;
    Je n'arrive pas à voir ce qui cloche... Toute suggestion est la bienvenue !

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    DROP comme CREATE sont des ordres DDL et vous devez utiliser du SQL dynamique (tel que EXECUTE IMMEDIATE) pour effectuer de tels ordres dans votre bloc.

    Enfin, le PL est un langage procédural et ne concerne pas la norme SQL donc si votre sujet n'est pas résolu avec ces éléments de réponse, je déplacerai votre discussion dans le forum Oracle dans la rubrique PL/SQL.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut
    Citation Envoyé par Magnus
    DROP comme CREATE sont des ordres DDL et vous devez utiliser du SQL dynamique (tel que EXECUTE IMMEDIATE) pour effectuer de tels ordres dans votre bloc.
    Vous serait-il possible de développer à ce sujet SVP ?

    Citation Envoyé par Magnus
    Enfin, le PL est un langage procédural et ne concerne pas la norme SQL donc si votre sujet n'est pas résolu avec ces éléments de réponse, je déplacerai votre discussion dans le forum Oracle dans la rubrique PL/SQL.
    Désolé si j'ai posté dans le mauvais forum...

  4. #4
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    EXECUTE IMMEDIATE 'DROP SEQUENCE MA_SEQUENCE';
    EXECUTE IMMEDIATE 'CREATE MA_SEQUENCE SEQUENCE_REQ_COLONNE'||
            ' START WITH maxId'||
            ' MAXVALUE 999999999999999999999999999'||
            ' MINVALUE 0'||
            ' NOCYCLE'||
            ' CACHE 20'||
            ' NOORDER';

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut
    Désolé du retard de la réponse... J'ai été occupé sur d'autres sujets cette semaine, je n'ai pas pensé à checker les réponses

    Merci beaucoup pour la solution !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [eZ Publish] Problème d'affichage d'une image dans un bloc XML
    Par azrael62 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 02/07/2012, 12h06
  2. Oracle : Modifier la valeur courante d'une séquence
    Par arkienou dans le forum Oracle
    Réponses: 7
    Dernier message: 10/08/2006, 09h08
  3. Utilisation d'une variable dans un bloc pl/sql
    Par paris2000fr dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/03/2006, 14h08
  4. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  5. Réponses: 4
    Dernier message: 18/10/2004, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo