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 :

pour commencer pl/sql et sql*plus


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Par défaut pour commencer pl/sql et sql*plus
    Bonjour,

    Compètement nouveau sur oracle (mais avec qqs bases de SQL) j'ai besoin de votre aide pour commencer ...

    Je travaille pour l'instant sur une oracleXE 10 G sous windows, en attendant la mise en place d'un serveur de prod.

    J'ai besoin de générer un fichier texte issue de plusieurs tables générable seulement en PL/SQL

    Q1 - donc je ne peux pas utiliser la commande SPOOL et SPOOL OFF, est ce exact ?


    Ce fichier va attendre rapidement des gros volumes

    Q2 - donc je dois utiliser
    le package UTL_FILE, est-ce correct ?


    J'ai récupéré ici http://gbriard.club.fr/technique/5.htm une procédure qui permet de tester ce package, mais j'ai de soucis avec ...

    J'ai modifié le fichier init.ora pour ajouter

    Le code suivant est sauvé dans le fichier test_utl_file.sql

    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
    29
    30
    31
    32
     
        --
        -- Test du package UTL_FILE
        --
        CREATE OR REPLACE PROCEDURE Test_util_file IS
          ref_fichier UTL_FILE.FILE_TYPE;
        BEGIN
          ref_fichier := UTL_FILE.FOPEN('d:\test','resultat.txt','w');
          UTL_FILE.PUT_LINE(ref_fichier,'Première ligne...');
          UTL_FILE.PUT_LINE(ref_fichier,'C''est fini...');
          UTL_FILE.FFLUSH(ref_fichier);
          UTL_FILE.FCLOSE(ref_fichier);
        EXCEPTION
          -- traitement des erreurs rencontrees
          WHEN NO_DATA_FOUND THEN
              DBMS_OUTPUT.PUT_LINE ('Pas de donnée trouvée.');
              UTL_FILE.FCLOSE(ref_fichier);
          WHEN UTL_FILE.INVALID_PATH THEN 
              DBMS_OUTPUT.PUT_LINE ('UTL_FILE.INVALID_PATH invalide.');
              UTL_FILE.FCLOSE(ref_fichier);
          WHEN UTL_FILE.READ_ERROR THEN 
              DBMS_OUTPUT.PUT_LINE ('UTL_FILE.READ_ERROR invlide.');
              UTL_FILE.FCLOSE(ref_fichier);
          WHEN UTL_FILE.WRITE_ERROR THEN 
              DBMS_OUTPUT.PUT_LINE ('UTL_FILE.WRITE_ERROR invalide.');
              UTL_FILE.FCLOSE(ref_fichier);
          WHEN OTHERS THEN 
              DBMS_OUTPUT.PUT_LINE ('Autre erreur.');
              UTL_FILE.FCLOSE(ref_fichier);
        END; -- fin de la procedure
            -- le signe / execute la procedure sous SQL*Plus
        /
    Lorsque je fait dans sql*plus
    J'ai l'erreur suivante :
    PLS-00201: l'identifiant test_utl_file doit être déclaré

    Q3 - pourquoi ? La commande execute n'est elle pas capable de chercher le fichier test_utl_file ?


    Depuis l'insterface web de oracleXE de colle le code de test_utl_file j'obtiens :
    ERROR at line 0: PL/SQL/ Compilation unit analysis terminated


    Q4 - Que cela signifie t'il ?
    La procédure est bien crée, par contre elle est vide, ce qui est logique vue l'erreur rencontré ...

    Je suis désolé pour toutes ces questions basiques, mais leur réponses (surtout pour la 3 et la 4) me permettront d'avancer avec les support pl/sql que j'ai pu récupérer ici et ailleurs.

    D'avance merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Par défaut
    Bonjour,

    Je continue mes tests, mes ceux çi ne sont toujours pas concluants, il doit me manquer un truc basique, mais pour l'instant je séche ...

    Je viens d'exécuter la même procédure que ci-dessus, mais allégé (en virant les retrictions)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE PROCEDURE Test_util_file IS
       ref_fichier UTL_FILE.FILE_TYPE;
    BEGIN
       ref_fichier := UTL_FILE.FOPEN('d:\test','resultat.txt','w');
       UTL_FILE.PUT_LINE(ref_fichier,'Première ligne...');
       UTL_FILE.PUT_LINE(ref_fichier,'C''est fini...');
       UTL_FILE.FFLUSH(ref_fichier);
       UTL_FILE.FCLOSE(ref_fichier);
    END;
    /
    Lorsque j'exécute cette procédure avec l'interface oracleXE 10G il m'indique que le package a été crée,mais qd je regarde mes procédures stockés celle-ci y est mais elle apparait vide.

    Si j'essaye d'éxecuter cette procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BEGIN 
    test_utl_file; 
    END; 
    /
    J'ai l'erreur suivante :
    PLS-00201: l'identifiant test_utl_file doit être déclaré


    Savez-vous ou je me trompe ?

  3. #3
    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
    Après création de vos objets, utilisez l'instruction SHOW ERRORS pour voir les erreurs de compilation.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Par défaut
    Bonjour,

    Je crois que j'ai voulu commencer trop fort avec tout ça, je laisse tomber pour l'instant.
    J'ai tout de même une question dont j'imagine la réponse ultra simple :

    Losque j'exécute ce code (trouvé sur le support PL/SQL ici http://sheikyerbouti.developpez.com/pl_sql/) avec sql*plus, la ligne 'Salut Monde' ne s'affiche pas, alors que j'ai un message comme quoi cela c'est exécuté convenablement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DECLARE
    LC$Chaine VARCHAR2(15) := 'Salut Monde' ;
    BEGIN
    DBMS_OUTPUT.PUT_LINE( LC$Chaine ) ;
    END ;
    Merci

  5. #5
    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
    Par défaut, la sortie n'est pas activée.

    il faut d'abord utiliser l'instruction

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    CREATE OR REPLACE PROCEDURE Test_util_file IS
    BEGIN
    test_utl_file;
    END;
    PL/SQL ne fait pas la différence minuscules/majuscules pour les identifiants mais il sait quand même faire la différence s'il manque 1 seule lettre

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

Discussions similaires

  1. [SQL] Requête SQL trop compliquée pour lui.
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 23/05/2006, 22h52
  2. pb pour vider une table sous sql
    Par xence dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/03/2006, 08h09
  3. Besoin d'aide pour passage de mysql a sql server
    Par mobscene dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/12/2005, 07h55
  4. Pb pour executer une procédure sous SQL PLUS
    Par rabddoul dans le forum Oracle
    Réponses: 4
    Dernier message: 21/10/2005, 15h40

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