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

Langage SQL Discussion :

condition if en sql


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 60
    Par défaut condition if en sql
    Bonjour,

    Voila je suis nouveau et je debute un peu dans le sql...

    J'ai essayé de faire un if pour tester si une table existait ou pas, mais rien ne marche...je sais pas trop quoi faire...

    Si qqun pourait m aider ca serait sympa

    Voici mon code :

    IF TABLE agent NOT EXISTS (
    CREATE TABLE `agent` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `nom` VARCHAR( 50 ) NOT NULL ,
    `date` DATE NOT NULL ,
    `col_heure` INT NOT NULL ,
    `col_xls` INT NOT NULL ,
    PRIMARY KEY ( `id` )
    );
    )
    ELSE (
    IF nom FROM agent NOT EXISTS (
    CREATE `nom` VARCHAR( 50 ) NOT NULL
    )
    IF date FROM agent NOT EXISTS (
    CREATE `date` DATE NOT NULL
    )
    IF col_heure FROM agent NOT EXISTS (
    CREATE `col_heure` INT NOT NULL
    )
    IF col_xls FROM agent NOT EXISTS (
    CREATE `col_xls` INT NOT NULL
    )
    )

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut .

    pour créer une table en vérifiant si elle existe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE if not exists`agent` ( 
    `id` INT NOT NULL AUTO_INCREMENT , 
    `nom` VARCHAR( 50 ) NOT NULL , 
    `date` DATE NOT NULL , 
    `col_heure` INT NOT NULL , 
    `col_xls` INT NOT NULL , 
    PRIMARY KEY ( `id` ) 
    );
    Pour des colonnes il faut voir du coté de alter

    bon courage

  3. #3
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Le langage SQL n'est pas idéal pour cela. Quel est ton SGBD ? Chacun dispose en général d'un langage procédural qui permet les structures conditionnelles.
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Quel est le but de tout cela ?
    En tout état de cause, les SGBDR qui suivent la NORME SQL possède un schéma appelé INFORMATION_SCHEMA qui contient toutes les vues dont tu as besoin. Les autres ont des vues 'système' propriétaires pour faire la même chose.

  5. #5
    Membre averti
    Inscrit en
    Août 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 60
    Par défaut
    je ne comprends pas entièrement ce qu'est le SGBDR mais je peux au moin repondre au but de cela...

    Je suis chargé de faire un projet en perl qui permet d'analyser des fichier de stats d'un Helpdesk (fichier xls) et de les sauvez dans une DB, de plus un fichier de config a été créer pour donné le choix de sauver ce que l'utilisateur souhaite....

    En résumé c'est cela, j'espère que vous avez compris et que je ne me suis pas exprimé trop mal.

    Pour ce qui est du : CREATE TABLE if not exists`agent`(...)

    je connaissais deja mais est ce possible de faire la même chose avec les champs ?

    Merci d'avance

  6. #6
    Membre averti
    Inscrit en
    Août 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 60
    Par défaut
    Je me suis renseigné et j'ai vu qu'on pouvait le faire avec la commande ALTER TABLE...
    Le problème c'est que niveau syntaxe c'est pas gagné...

    En voila la preuve :

    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
     
    CREATE TABLE if not exists`agent` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `nom` VARCHAR( 50 ) NOT NULL ,
    `date` DATE NOT NULL ,
    `col_heure` INT NOT NULL ,
    `col_xls` INT NOT NULL ,
    PRIMARY KEY ( `id` )
    ) ELSE (
    `nom` FROM `agent` IF NOT EXISTS (
    ALTER TABLE `agent` [ADD] [COLUMN nom] VARCHAR( 50 ) NULL
    )
    `date` FROM `agent` IF NOT EXISTS (
    ALTER TABLE `agent` [ADD] [COLUMN date] DATE NULL
    )
    `col_heure` FROM `agent` IF NOT EXISTS (
    ALTER TABLE `agent` [ADD] [COLUMN col_heure] INT NULL
    )
    `col_xls` FROM `agent` IF NOT EXISTS (
    ALTER TABLE `agent` [ADD] [COLUMN col_xls] INT NULL
    )
    )

  7. #7
    Membre confirmé Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Par défaut
    Citation Envoyé par ushiwa.sasuke
    je ne comprends pas entièrement ce qu'est le SGBDR
    Un SGBDR (Système de Gestion de Bases de Données Relationnelles) est la structure qui va te permettre de stocker, administrer et développer des Bases de Données Relationnelles.

    Oracle en est un, avec une implémentation du langage SQL lui étant propre, MySQL en est un autre, SQL server aussi.

    S'il t'a été demandé quel SGBD tu utilise, c'est pour voir si le langage qui lui est propre intègre les fonctions conditionnelles que tu demandes...

    ++

  8. #8
    Membre averti
    Inscrit en
    Août 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 60
    Par défaut
    oki je commence à comprendre...

    pour info j'utilise Oracle...

  9. #9
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Citation Envoyé par ushiwa.sasuke
    pour info j'utilise Oracle...
    OK, dommage de ne pas l'avoir dis dès le début

    Voilà un bout de script en PL/SQL dont je me sers pour la MAJ de bases :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    DECLARE
     
       procedure sqlExecute (sql_cmd in varchar2)
       IS
          id_curseur integer;
          nbLign_curseur integer;
       BEGIN
          id_curseur := DBMS_SQL.OPEN_CURSOR;
          DBMS_SQL.PARSE (id_curseur, sql_cmd, DBMS_SQL.NATIVE);
          nbLign_curseur := DBMS_SQL.EXECUTE (id_curseur);
          DBMS_SQL.CLOSE_CURSOR (id_curseur);
       END sqlExecute;
     
    BEGIN
     
    PROCEDURE Base IS
       cnt NUMBER(2);
    BEGIN
       dbms_output.put_line('Procédure Base :');
     
    --Ajout d'un CHAMP:
       SELECT count(column_name) INTO cnt FROM user_tab_columns WHERE table_name = 'MATABLE' AND column_name = 'MONCHAMP';
       IF cnt = 0 THEN
          sqlExecute ('ALTER TABLE MATABLE ADD MONCHAMP bla bla');
          dbms_output.put_line('  - Création champ C (T)');
       ELSE
          dbms_output.put_line('  * Champ MONCHAMP (MATABLE) existe déjà !');
       END IF;
     
    --Ajout d'une TABLE:
       SELECT COUNT(Table_Name) INTO cnt FROM user_Tables WHERE Table_Name = 'MATABLE';
       IF cnt = 0 THEN
          sqlExecute('CREATE TABLE MATABLE ( blabla)');
          dbms_output.put_line('  - création de la table MATABLE');
       ELSE
          dbms_output.put_line('  * la table MATABLE existe déjà !');
       END IF;
     
    END Base;
     
     
    /****************************
    	MAIN () 
    ****************************/
    BEGIN
     
       sp_tim.capture;
       Base;
       sp_tim.show_elapsed('MAJ Diverses');
    END;
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  10. #10
    Membre averti
    Inscrit en
    Août 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 60
    Par défaut
    Merci beaucoup pour le script...

    Malheureusement je ne comprend pas tout...

    Mais avec un peu de recherche de documentation, je devrai m'en sortir...

Discussions similaires

  1. Condition en langage SQL
    Par janjannaj dans le forum Bases de données
    Réponses: 9
    Dernier message: 17/04/2011, 14h10
  2. condition si dans sql
    Par adelneo dans le forum SQL
    Réponses: 2
    Dernier message: 14/02/2011, 11h19
  3. [AC-2007] Condition WHERE en SQL qui me retourne une liste vide
    Par Rodrigue dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/11/2010, 15h28
  4. Condition != en langage sql
    Par mullger dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/11/2007, 10h19
  5. ajout et mise à jour conditionés avec T-SQL
    Par monsurf dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/05/2006, 15h59

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