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 Procédural MySQL Discussion :

Création d'une table temporaire dans une procédure


Sujet :

SQL Procédural MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Création d'une table temporaire dans une procédure
    Bonjour à tous,

    Je tente vainement de créer une table temporaire au moyen d'une procédure que voici :
    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
     
    use MyDB;
    drop procedure if exists testtbl;
    delimiter $$
    create procedure testtbl(in code varchar(8)) language sql deterministic
    begin
    set @sql1=concat("drop temporary table if exists tmptbl;");
    set @sql2=concat("create temporary table tmptbl as (select * from entites where code_entite='",code,"');");
    set @sql=concat(@sql1,@sql2);
    select @sql;
    prepare str from @sql;
    execute str;
    deallocate prepare str;
    end$$
    delimiter ;
    Pas de problème pour cette partie.
    Par contre, lorsque je demande l'exécution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call testtbl('50000000');
    alors je reçois une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create temporary table tmptbl as (select * from entites where code_entite='50000' at line 1
    Je ne vois pas où se situe l'erreur ni comment corriger.
    Merci pour votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 865
    Points : 53 021
    Points
    53 021
    Billets dans le blog
    6
    Par défaut
    1) Vous avez stupidement créé une table ont le nom de colonne est "IN" qui est un mot clé réservé de SQL. À me lire : http://sqlpro.developpez.com/cours/s...age=partie1#L1
    2) vous faites un premier CONCAT qui ne concatène rien
    3) vous utilisez les guillemets pour délimiter des chaines de caractères lors que dans SQL ces chaines doivent être délimitées par des apostrophes....

    Dois-je continuer ???

    Bref commencez par apprendre le langage SQL et PL/PG SQL.....

    A +

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse !
    Mais pas pour l'agressivité de celle-ci.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    De plus, le mot réservé IN n'est nullement le nom d'une colonne mais bien le sens du paramètre de la procédur, ce qui est parfaitement licite en MySQL

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 865
    Points : 53 021
    Points
    53 021
    Billets dans le blog
    6
    Par défaut
    Mea culpa.....

    Avez-vous résolu votre problème ?

    A +

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Mea culpa.....

    Avez-vous résolu votre problème ?

    A +
    Non malgré les corrections suggérées apportées (guillemets)
    Aucune idée de la raison de cette erreur
    Bien à vous

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    je ne suis pas sur que vous pouvez exécuter 2 statement en un.

    Personnellement, jexecuterai la 1ere requete, puis la deuxième dans 2 EXECUTE séparé.

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

Discussions similaires

  1. [10g] Création d'une table temporaire dans une procédure stockée
    Par valboubou dans le forum PL/SQL
    Réponses: 2
    Dernier message: 20/02/2014, 09h34
  2. Impossible de créer une table temporaire dans une fonction
    Par bossun dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/10/2007, 10h03
  3. Réponses: 8
    Dernier message: 06/06/2007, 17h03
  4. Réponses: 5
    Dernier message: 15/03/2007, 13h48
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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