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 :

ajouter un parition a une table en pl/sql


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2009
    Messages : 152
    Par défaut ajouter un parition a une table en pl/sql
    J'ai un problème,

    J'essaie de créer un procédure me permettant d'ajouter une partition à une table.

    voici le code que j'ai ecrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    requete_add_partition := 'ALTER TABLE D9DMP.ACTIVITY_HISTO ADD PARTITION TOTO_20101001 VALUES LESS THAN (TO_DATE(:1, :2, :3)) LOGGING NOCOMPRESS';
     
    execute immediate requete_add_partition into result using date_partition_insert, format_date, calendar_format ;
    Le message d'erreur que j'obtiens:

    ERROR at line 1:
    ORA-14019: partition bound element must be one of: string, datetime or interval
    literal, number, or MAXVALUE
    ORA-06512: at "D9DMP.ESSAI", line 75
    ORA-06512: at line 1
    Je pense que le problème previent des guillemets il en manque pour chaque parametre mais je ne sais pas comment faire pour les ajouter ...

    Merci d' avance

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Quel est votre version d'Oracle ?

    Quelles sont les valeurs des arguments que vous envoyez à to_date ?

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2009
    Messages : 152
    Par défaut
    la version est 9.2.0.8

    et les paramètres sont:

    2011-11-01 00:00:00
    YYYY-MM-DD HH24:MI:SS
    NLS_CALENDAR=GREGORIAN

    La commande est normalement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER TABLE D9DMP.ACTIVITY_HISTO ADD PARTITION TOTO_20101001 VALUES LESS THAN
    (TO_DATE('2011-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    LOGGING NOCOMPRESS
    Pensez vous que le problème viennent des guillemets ??

    Merci

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Essayez ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    requete_add_partition := 'ALTER TABLE D9DMP.ACTIVITY_HISTO ADD PARTITION TOTO_20101001 VALUES LESS THAN (TO_DATE('':1'', '':2'', '':3'')) LOGGING NOCOMPRESS';

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2009
    Messages : 152
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Je viens de procéder la mise à jour et j'obtiens le message suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ERROR at line 1:
    ORA-12702: invalid NLS parameter string used in SQL function
    ORA-06512: at "D9DMP.ESSAI", line 75
    ORA-06512: at line 1
    Voici le contenu de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    table_owner varchar (10) := 'D9DMP';
        table_name varchar(15) := 'ACTIVITY_HISTO';
        date_partition_insert varchar(30) := '2011-11-01 00:00:00';
        result varchar(30);
        format_date varchar(30) := 'YYYY-MM-DD HH24:MI:SS';
        calendar_format varchar(30) := 'NLS_CALENDAR=GREGORIAN';
    ...
    ...
    requete_add_partition := 'ALTER TABLE D9DMP.ACTIVITY_HISTO ADD PARTITION TOTO_20101001 VALUES LESS THAN (TO_DATE('':1'', '':2'', '':3'')) LOGGING NOCOMPRESS';
            execute immediate requete_add_partition into result using date_partition_insert, format_date, calendar_format ;
    Vous avez une idée ?? j'ai bien entendu testé la commande en 'sql statique' et cela fonctionne ...

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Comme toujours avec execute immediate, sortez la chaine finale dans une table pour pouvoir la "jouer" sous Toad ou Sql*Plus, sinon, vous pouvez passer des heures à comprendre ce qui cloche.

Discussions similaires

  1. ajouter un champ dans une table existant
    Par zidenne dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/10/2005, 21h27
  2. Ajouter des CHAMPS dans une table via ASP
    Par hysteresis dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 15h39
  3. Réponses: 14
    Dernier message: 22/09/2005, 16h49
  4. Ajouter un champs dans une table (Access 2000)
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/10/2004, 13h02

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