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 :

Create table dans package


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut Create table dans package
    Bonjour,

    J'ai essayé de mettre un create table dans un package body mais j'ai une erreur de compil.

    j'ai essayé a la "mode SQL serveur"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    -- création de la table d'import
    	commande:='create table IMPORT_TMP (ID_PANO INTEGER,X FLOAT,Y FLOAT,altitude float,yaw float,pitch float,roll float,date_data varchar2(50),sky_cover float) ';
    	commande:= commande || ' ORGANIZATION EXTERNAL ( TYPE oracle_loader  DEFAULT DIRECTORY MYREP ACCESS PARAMETERS (';
    	commande:= commande || ' RECORDS DELIMITED BY NEWLINE';
    	commande:= commande || ' SKIP 1';
    	commande:= commande || ' FIELDS TERMINATED BY ''\t''';
    	commande:= commande || ' MISSING FIELD VALUES ARE NULL ) LOCATION (' || :nom || ')  )	REJECT LIMIT 0	NOMONITORING;';
     
    	EXECUTE commande;
    sans succès.
    quelqu'un aurait-il une astuce a me proposer?

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    C'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE IMMEDIATE commande;

  3. #3
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    merci de ta réponse Mcm, je n'ai plus l'erreur si je fais un select dans la commande. En revanche j'ai le message d'erreur suivant lorsque la commande concerne un create table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    begin
    *
    ERREUR à la ligne 1 :
    ORA-01031: privilèges insuffisants
    ORA-06512: à "CASSINI.IMPORT_LIVRAISON", ligne 21
    ORA-06512: à ligne 2
    comment mettre un grant sur un package.
    Je précise que je l'ai créé sous un compte SYSDBA du schéma

  4. #4
    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
    Citation Envoyé par serge0934 Voir le message
    Bonjour,

    J'ai essayé de mettre un create table dans un package body mais j'ai une erreur de compil.

    j'ai essayé a la "mode SQL serveur"
    ...
    Ne le faites pas avec Oracle c'est une mauvaise solution !
    Utilisez à la limite une table temporaire créée à l'installation !
    Mais, il est plus probable c'est que vous n'ayez pas besoin de cette table.

  5. #5
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    je dois créer des centaines de tables avec des fichiers texte venant d'un fournisseur.
    il s'avère que ce fournisseur mets des valeurs incohérentes pour le moment dans ses fichiers; exemples:
    'NaN' dans un champ integer
    'erreur' dans un champ date
    et j'en passe...
    donc je créé des tables temporaires avec ces fichiers, je teste la cohérence des données et je loggue les erreurs.
    Dans le cas où il n'y a pas d'erreur, je fais ensuite un create table table_finale as select * from table temporaire puis je droppe la table temporaire
    je ne vois pas de solutions plus simple !!

    si vous en connaissez une, je suis preneur

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pourquoi ne garde pas une table "fixe" que tu "truncate" au besoin au lieu de la créer/supprimer régulièrement ?

  7. #7
    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
    Citation Envoyé par serge0934 Voir le message
    je dois créer des centaines de tables avec des fichiers texte venant d'un fournisseur.
    il s'avère que ce fournisseur mets des valeurs incohérentes pour le moment dans ses fichiers; exemples:
    'NaN' dans un champ integer
    'erreur' dans un champ date
    et j'en passe...
    donc je créé des tables temporaires avec ces fichiers, je teste la cohérence des données et je loggue les erreurs.
    ...
    Avec Oracle vous avez des tables externes pour ça.

    Citation Envoyé par serge0934 Voir le message
    ...
    Dans le cas où il n'y a pas d'erreur, je fais ensuite un create table table_finale as select * from table temporaire puis je droppe la table temporaire
    je ne vois pas de solutions plus simple !!

    si vous en connaissez une, je suis preneur
    Faut il comprendre que derriere chaque fichier correct vous avez une autre table dans votre application ?

  8. #8
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    Je vais vous donner un exemple concret:
    j'ai un fichier concernant une localité avec des infos : 3 champs integer, 2 date, 1 varchar
    j'ai un autre fichier concernant une autre localité avec les mêmes infos : 3 champs integer, 2 date, 1 varchar
    donc je charge chaque fichier dans une table temporaire, je fais mes vérif, et si c'est ok, je créé une table "permanente" avec un create table as select =>
    j'ai donc une table permanente pour chaque fichier correct.
    ensuite je rajoute des champs sur ces tables pour mettre certaines infos a nous (ex: type fournisseur,dateréception, localité) et puis j'insère toutes les lignes de ces tables "permanentes" dans une table globale France_xx. Enfin je suprime les tables qui ne servent plus, tout en logguant que les fichiers ont été intégrés.
    en résumé, je créé comme tables:

    - VILLE_FOURNISSEUR_NUMVERSION_TMP
    - VILLE_FOURNISSEUR_NUMVERSION

    où VILLE peut avoir 141 noms différents, FOURNISSEUR 5, et pour NUMVERSION, certains sont déjà a 15.
    si je fais un script pour chaque cas j'aurai 141 * 5 * 10 = 7050 scripts au mini

    j'espère avoir été assez clair

    mnitu: je vais regarder ce que sont les tables externes.
    merci a vous
    A+
    serge

  9. #9
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    petite précision, j'avais pas pensé que ces tables s'appelaient des tables externes. En fait ma table temporaire est une table externe.
    sur SQL serveur il n'y a pas de différences avec SSIS

Discussions similaires

  1. Create table dans une loop PL/SQL
    Par neo.51 dans le forum PL/SQL
    Réponses: 5
    Dernier message: 04/03/2009, 10h59
  2. Create table dans une fonction SQL
    Par mimi0501 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2008, 13h25
  3. [PL/SQL] Create table dans un trigger
    Par CrazyLiam dans le forum PL/SQL
    Réponses: 9
    Dernier message: 11/12/2007, 13h49
  4. Create table dans le mauvais schema
    Par Daark dans le forum Administration
    Réponses: 3
    Dernier message: 19/12/2006, 14h11
  5. [8i] Parrallel_clause dans CREATE TABLE
    Par ducho dans le forum Oracle
    Réponses: 2
    Dernier message: 14/02/2006, 16h27

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