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 :

erreur PLS-00201: l'identificateur 'MON_TABLESPACE' doit être déclaré


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Novembre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant communication & réseaux

    Informations forums :
    Inscription : Novembre 2014
    Messages : 57
    Par défaut erreur PLS-00201: l'identificateur 'MON_TABLESPACE' doit être déclaré
    Bonjour,

    J'essaie de creer un bout de code PL/SQL me permettant de creer une table si celle ci n'existe pas dans mon schema:

    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
    25
    26
    27
    28
     
    SET SERVEROUTPUT ON;
    DECLARE 
    v_count NUMBER := 0;
    v_tbs_data VARCHAR2(50) := &1;
     
    BEGIN
    dbms_output.put_line('CREATING TABLE MA_TABLE');
    SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name='MA_TABLE';
    dbms_output.put_line('count=' ||v_count||'');
    IF (v_count = 0) THEN
    dbms_output.put_line('MA_TABLE DOES NOT EXIST');
      EXECUTE IMMEDIATE 'CREATE TABLE MA_TABLE(
        CHAMPS1 VARCHAR2(50),
        CHAMPS2 VARCHAR2(50),
        CHAMPS3 VARCHAR2(50),
        CHAMPS4 VARCHAR2(50),
        CHAMPS5  NUMBER(38,0)
      )
      TABLESPACE ' || v_tbs_data || '';
    ELSE
    dbms_output.put_line('MA_TABLE ALREADY EXISTS....');
    END IF;
    dbms_output.put_line('END OF TABLE CREATION - MA_TABLE');
    END;
    /
     
    SET SERVEROUTPUT OFF;
    A l'execution j'ai l'exception suivante qui est levée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Rapport d'erreur -
    ORA-06550: Ligne 3, colonne 28 :
    PLS-00201: l'identificateur 'MON_TABLESPACE' doit être déclaré
    ORA-06550: Ligne 3, colonne 12 :
    PL/SQL: Item ignored
    ORA-06550: Ligne 17, colonne 19 :
    PLS-00320: déclaration de type de cette expression est incomplète ou mal structurée
    ORA-06550: Ligne 10, colonne 3 :
    PL/SQL: Statement ignored
    06550. 00000 -  "line %s, column %s:\n%s"
    *Cause:    Usually a PL/SQL compilation error.
    *Action:
    Le nom du tablespace est passé en paramètre.

    Auriez vous une idée de ce que j'ai mal fait? J'avoue cherché mais ne pas voir mon erreur...

    merci à vous,

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    L'erreur n'est pas dans le code PL/SQL mais au niveau du fonctionnement de SQL*plus.
    Les paramètres passés à ce dernier sont interprétés littéralement et une chaine de caractères doit donc être encadrée de guillemets pour ne être prise en compte comme un nom de variable.

    La correction serait donc tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v_tbs_data VARCHAR2(50) := '&1';
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/09/2011, 12h04
  2. Réponses: 2
    Dernier message: 20/09/2007, 09h22
  3. Réponses: 3
    Dernier message: 26/02/2007, 15h02
  4. Réponses: 3
    Dernier message: 14/02/2007, 17h56
  5. Réponses: 2
    Dernier message: 12/12/2006, 09h48

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