|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre Expert
![]() Développeur C Inscription : août 2004 Messages : 1 460 ![]() |
Bonjour,
Je me remets tout doucement aux SGDB. Ca fait environ 2ans que je n'ai pas fait de SQL (j'étais sous SQL Server). Maintenant je suis sous MySql et j'ai quelques soucis, j'ai téléchargé MySQL Query Browser pour me faciliter la tâche. Mon but est de faire une procédure stockée qui va chercher des éléments dans une table, et suivi le résultat, d'autres requêtes seront faites, donc dans cette procédure stockées il y aura plusieurs lignes de code exécutées. J'ai trouvé des exemples dans des forum, mais jamais avec la même syntaxe, ça me déroute un peu : Code :
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 'Declare strSQL SET strSQL = 'SELECT * FROM operation' exec strSQL' at line 1 J'ai aussi essayé la syntaxe SQL Server : Code :
J'ai essayer de mettre des ; en fin de ligne, mais je n'ai pas trop de succès. J'ai supprimé la commande exec qui n'existe peut-etre pas sous MySql. Code :
Script line: 1 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 'DECLARE strSQL CHAR(200)' at line 1 Script line: 2 Unknown system variable 'strSQL' Quelqu'un aurait un lien vers une bonne source de doc à propos des scripts MySQL (version 5.0) ? Merci |
||||||
|
|
00
|
|
|
#2 | ||
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
Perso je les fais comme ceci.
Code :
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
||
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() Développeur C Inscription : août 2004 Messages : 1 460 ![]() |
En fait, je me suis mal exprimé, ce n'est pas aussi simple !
Je fais une procédure stockée qui fait plusieurs choses. - Je récupère des éléments dans une table (de téléchargement) en faisant un select distinct (avec un curseur) Code :
DECLARE cur CURSOR FOR SELECT DISTINCT `serial_number` FROM `downloading` - je stocke ce résultat dans une table temporaire J'essaie d'utiliser les CURSOR (là ça va) et les tables temporaires (là ça coince), j'ai donc créé des tables non TEMPORARY. J'essaie aussi de créer des requêtes dans la procédure en fonction de certains paramètres comme : Code :
Unknown prepared statement handler (strsql) given to EXECUTE Je fais mes test avec MySQL Query Browser. Par contre, j'ai fait un test avec MySQL Command Line Client, avec exactement la même syntaxe, je n'ai pas d'erreur. J'ai encore beaucoup de mal avec la syntaxe MySQL, à quoi servent les '@' par exemple. Le script de création de la procédure ne retourne aucune erreur, mais je me demande quand même si ne n'ai pas fait des erreurs. Merci pour votre aide. |
||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() |
Bonjour,
construire la requête sous forme de chaîne de caractères peut être effectivement une solution. Apparemment d'après le message d'erreur l'erreur ne se situe pas dans le bout de code que tu nous a premièrement montré. peut-tu nous montrer la requête complète ?
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Développeur C Inscription : août 2004 Messages : 1 460 ![]() |
Bonjour,
J'ai mis en commentaire la commande INSERT parce qu'elle devra aussi faire l'objet d'un EXECUTE. Voici tout le code : Code :
J'aurais aussi une question, ca marche bien quand je claque tout en dur. Pourque le SELECT de la dernière ligne me retourne une erreur me disant que la table n'existe pas quand je fait CREATE TEMPORARY TABLE. Il y a des 'GO' (ou équivalent) à mettre comme dans SQL Server ? Vu que je débute en MySQL , je ne sais pas si c'est une erreur de syntaxe ou un problème de config du serveur. Merci |
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Développeur C Inscription : août 2004 Messages : 1 460 ![]() |
Ca y est j'ai trouvé mon erreur.
Pourtant la description de l'erreur était explicite |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() ![]() |
Bonjour,
laquelle est-elle ? Cela pourrait servir à d'autres.
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
|
00
|
|
|
#8 | ||||
|
Membre Expert
![]() Développeur C Inscription : août 2004 Messages : 1 460 ![]() |
En fait, au lieu de faire l'équivalent de :
Code :
Code :
Erreur toute bête, mais quand on est à fond dedans on se rend plus compte des grosses bêtises qu'on fait, elle était pourtant simple à trouver. |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com