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 :

Remplissage des tables en utilisant du PL/SQL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Par défaut Remplissage des tables en utilisant du PL/SQL
    Bonjour,
    le but est d’insérer des valeurs dans les tables en utilisant des boucles avec pl/sql
    je viens d’exécuter ce code

    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
    declare
    date_sousc date;
    montant number;
    code number;
    code_ass number;
    code_comp number;
    mat number;
    begin
    for code in 1..800000 loop
    select floor(dbms_random.value(1,200000))into code_ass from dual;
    select floor(dbms_random.value(1,20.2))into code_comp from dual;
    select floor(dbms_random.value(1,40000.2))into mat from dual;
    select trunc(dbms_random.value(5000,100000),2)into montant from dual;
    select to_date(trunc(dbms_random.value(to_char(date '2014-01-01','J'),to_char(date '2016-12-31','J')))
    	,'J')into date_sousc from dual;
    insert into contrat values(code,date_sousc,montant,code_ass,code_comp,mat);
    	end loop;
    commit;
    end;
    /
    puis j'ai cette erreur
    declare
    *
    ERREUR Ó la ligne 1 :
    ORA-01438: valeur incohÚrente avec la prÚcision indiquÚe pour cette colonne
    ORA-06512: Ó ligne 18
    que je ne comprends pas pourquoi.

    Merci pour toute contribution.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Par défaut
    Bonjour,

    Faites un DESC contrat et vérifiez que chaque colonne a bien une taille suffisante pour stocker les valeurs que vous envoyez.

  3. #3
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Votre insert est non-nommé vérifiez donc que les colonnes de la table de destination sont dans la bon ordre.
    autre remarque : pas besoin de PL/SQL pour ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    insert into contrat --(vérifiez/précisez l'ordre des colonnes)
    select floor(dbms_random.value(1,200000)) as code_ass,
           floor(dbms_random.value(1,20.2)) as code_comp,
           floor(dbms_random.value(1,40000.2)) as mat,
           trunc(dbms_random.value(5000,100000),2) as montant,
           to_date(trunc(dbms_random.value(to_char(date '2014-01-01','J'),to_char(date '2016-12-31','J')))  ,'J') as date_sousc 
      from dual
     connect by level <= 800000

  4. #4
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Par défaut
    Merci, j'ai resolu le probleme.

  5. #5
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Votre insert est non-nommé vérifiez donc que les colonnes de la table de destination sont dans la bon ordre.
    autre remarque : pas besoin de PL/SQL pour ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    insert into contrat --(vérifiez/précisez l'ordre des colonnes)
    select floor(dbms_random.value(1,200000)) as code_ass,
           floor(dbms_random.value(1,20.2)) as code_comp,
           floor(dbms_random.value(1,40000.2)) as mat,
           trunc(dbms_random.value(5000,100000),2) as montant,
           to_date(trunc(dbms_random.value(to_char(date '2014-01-01','J'),to_char(date '2016-12-31','J')))  ,'J') as date_sousc 
      from dual
     connect by level <= 800000 
    Bonjour Mnitu, c'est le connect by level qui génère les 800000 lignes donc ?
    Première fois que je vois ça ... alors pour ne pas mourir idiot et sans Oracle sous la main

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
     
    SQL> create table t_con(a int);
    Table created
     
    SQL> insert into t_con
      2  select level
      3  from dual
      4  connect by level <= 800000
      5  /
    800000 rows inserted
     
    SQL>

  7. #7
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
     
    SQL> create table t_con(a int);
    Table created
     
    SQL> insert into t_con
      2  select level
      3  from dual
      4  connect by level <= 800000
      5  /
    800000 rows inserted
     
    SQL>
    Parfait. Merci pour cette démo !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/01/2014, 14h05
  2. Réponses: 0
    Dernier message: 14/12/2008, 11h49
  3. Réponses: 11
    Dernier message: 23/09/2008, 13h16
  4. Comment suivre le remplissage des tables partitionnées
    Par marvelromy dans le forum Oracle
    Réponses: 3
    Dernier message: 19/11/2007, 19h16
  5. Equivalent des table Enum de mysql sous Sql server
    Par scaleo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/04/2006, 12h17

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