Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/06/2007, 13h48   #1
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 64
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 64
Points : 25
Points : 25
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 :
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 :
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 !
papyreno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 14h19   #2
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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.
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 14h55   #3
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 64
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 64
Points : 25
Points : 25
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...
papyreno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 15h32   #4
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

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

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Code :
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';
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 15h22   #5
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 64
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 64
Points : 25
Points : 25
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 !!!
papyreno est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h47.


 
 
 
 
Partenaires

Hébergement Web