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

SQL Oracle Discussion :

quitter un script (sql) si count(*) = 0


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut quitter un script (sql) si count(*) = 0
    Bonjour et bonne année à toutes et à tous,

    Tout est dans le titre mais je détaille un peu ca ne fera pas de mal :

    Le contexte : je dois extraire (dans un fichier texte) au max 5000 lignes d'une table par jour. Le système qui recevra ces données ne peut en effet pas intégrer plus de 5000 lignes par jour et la table d'où viennent ces données peut très bien être vide de temps à autre.

    Mon but : je souhaite "quitter" mon script (qui suit après) si le résultat d'un select count(*) renvoie zéro et donc ne pas exécuter ce qui suit après mon count(*) ! Trop simple pour moi ! M'enfin je n'arrive pas à trouver le début d'une piste !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    --Début de mon script 
    --C'est ici que je teste si mon count(*) renvoie zéro
    --donc j'aimerais à cet endroit faire un truc du style 
     
    column nombre_lignes new_value nb_lignes noprint
     
    select count(*)
    as nombre_lignes
    from MA_TABLE;
     
    if nb_lignes = 0 then EXIT QUIT ABORT or something like that ;-)
     
    -- reste du sql classique

    Petite précision le script est lancé sous Unix avec SqlPlus 10.2
    Quelqu'un quelqu'une aurait il-elle une ombre de soluce pour moi ?

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Je ne suis pas très habitué au scriptage sqlplus mais voici une approche possible :
    Utiliser WHENEVER SQLERROR EXIT FAILURE dans le script sql et générer une erreur via un bloc pl/sql. Donc s'il n'y a pas d'erreur le spool se fera sinon le script s'arrête.
    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
    33
    WHENEVER SQLERROR EXIT FAILURE
    set feedback off
    set linesize 1000
    set trimspool on
    set verify off
    set termout off
    set embedded on
    set long 200000
    set pages 0
     
    declare
      l_row_exists integer;
    begin
      -- Test si au moins une ligne existe
      select 1 into l_row_exists 
      from emp
      where rownum = 1;
    exception
      when no_data_found then
        --log table vide
        raise;
      when others then
        --log autre erreur
        raise;
    end;
    /
     
    set echo off
    spool export.txt
     select * from emp;
    spool off
    !cat export.txt
    exit

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut


    Et hop un petit tag Résolu !!!

    A tester au boulot mais "à la maison" çà marche au poil !!!

    Super merci ... j'avoue que je tournais autour du whenever mais sans penser faire un brin de PL/SQL ... Ben oui je cherchouille plutôt que d'attendre une réponse toute cuite ... M'enfin la soluce arrive souvent avant ma trouvaille.

    En tout cas, ta réponse répond à 100 % à mon besoin.
    C'est nickel !!!!!

    Daniel.

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

Discussions similaires

  1. Execution d'un script SQL
    Par Drahu dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/03/2004, 16h55
  2. Génération de script SQL avec les données
    Par borgfabr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/03/2004, 13h57
  3. Exécuter un script SQL
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/03/2004, 08h47
  4. create user, affectation droits et scripts sql
    Par hirochirak dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/02/2004, 10h21
  5. script SQL : affectation de variables
    Par Laura dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/10/2003, 21h32

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