Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3158 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySql] Soucis avec procédure stockée (newbie)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySql] Soucis avec procédure stockée (newbie)

n°1635086
nycius
Ich liebe dich !
Posté le 01-11-2007 à 14:24:10  profilanswer
 

Salut,
 
J'essaye de faire une procédure stockée simple en mysql :
 

Code :
  1. CREATE PROCEDURE selectall()
  2. BEGIN
  3. SELECT * FROM membre;
  4. END;


 
Seulement ca passe pas, j'ai une erreur 1064 ligne 3.
j'ai pas du faire quelque chose de correct mais je vois pas ou, j'ai suivi un tuto pourtant.
 
Si qqun peut me filer un coup de main  :jap:

mood
Publicité
Posté le 01-11-2007 à 14:24:10  profilanswer
 

n°1636864
nycius
Ich liebe dich !
Posté le 05-11-2007 à 15:16:26  profilanswer
 

up

n°1636870
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-11-2007 à 15:28:58  profilanswer
 

tu dois vraisemblablement avoir un problème de délimiteur, voir là:
http://dev.mysql.com/doc/refman/5. [...] edure.html

n°1636997
MagicBuzz
Posté le 05-11-2007 à 17:15:33  profilanswer
 

Comme ma grand-mère me dit toujours "les étoiles c'est dans le ciel et pas ailleurs".
 
BORDEL DE MERDE UNE PS C'EST COMPILE, COMMENT VEUT TU QU'IL ARRIVE A COMPILER SI TU LUI DIS PAS QUELS CHAMPS TU VEUX SELECTIONNER :fou:

n°1637053
nycius
Ich liebe dich !
Posté le 05-11-2007 à 18:11:05  profilanswer
 

MagicBuzz a écrit :

Comme ma grand-mère me dit toujours "les étoiles c'est dans le ciel et pas ailleurs".
 
BORDEL DE MERDE UNE PS C'EST COMPILE, COMMENT VEUT TU QU'IL ARRIVE A COMPILER SI TU LUI DIS PAS QUELS CHAMPS TU VEUX SELECTIONNER :fou:


 
Evite de me gueuler dessus  :ange:  ...
 
Si tu veux pas me répondre tu passes ton chemin ce sera mieux pour tout le monde, bien compris ?
 
anapajari >> ouaip j'ai lu tout ca mais ca coince tout pareil, je vais encore regarder
J'en ai pas besoin des PS c'est simplement pour ma culture

n°1637086
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-11-2007 à 18:27:29  profilanswer
 

tu feras gaffe, il t'a répondu :o
et en plus c'est vraisemblablement la cause de l'erreur également [:dawak]

n°1637112
nycius
Ich liebe dich !
Posté le 05-11-2007 à 18:54:22  profilanswer
 

anapajari a écrit :

tu feras gaffe, il t'a répondu :o
et en plus c'est vraisemblablement la cause de l'erreur également [:dawak]


 
parler gentillement c'est tj mieux
je prefere qu'il ne me réponde pas point final

n°1637137
MagicBuzz
Posté le 05-11-2007 à 19:17:35  profilanswer
 

En version plus gentille :
 

Code :
  1. SELECT *
  2. FROM matable


 
Le * est générique, et ne donne aucune information de nombre, taille ou types des champs.
Même si éventuellement ton erreur ne vient pas de là, de toute façon ça coince ici : impossible de compiler un truc si on sait pas ce qu'il y a dedans.
 
Le * est à banir de tout code. C'est sympa pour tester en vitesse un truc dans phpmyadmin, mais dans du code, on doit systématiquement voir les champs énumérés un à un, proprement.
 
Que ce passe-t-il sinon lorsque tu ajoutes un champ ? En supprime un ? Que tu modifies leur ordre ? Leur type ? Leur nom ?
 
En gros, tu es sur le parking de carrefour, tu donnes les clés de ta voiture à un inconnu, et tu lui dit "tiens, je te donne ma voiture". Il est bien avancé le gars...

n°1637139
MagicBuzz
Posté le 05-11-2007 à 19:19:56  profilanswer
 

PS : Et ta syntaxe (outre le *), même si éventuellement elle marche, est à éviter comme la peste. Regarde dans la doc de MySQL comment mettre en place une valeur de retour de type "table".
Du coup, ce ne sera plus une procédure, mais une fonction.
Là, sémentiquement, ça veut rien dire (normalement, ça doit rien retourner, même si sous SQL Server par exemple, ça retourne quand même quelquechose), et si demain d'as du code autour, il sera impossible de comprendre d'où vient le résultat.

n°1637174
nycius
Ich liebe dich !
Posté le 05-11-2007 à 20:10:16  profilanswer
 

J'ai mis SELECT * la pour aller plus vite, je ne mets jamais d'etoile dans une requete SQL.
 
Pour ma PS, meme si je spécifie le nom du champs ca passe pas.

mood
Publicité
Posté le 05-11-2007 à 20:10:16  profilanswer
 

n°1637268
MagicBuzz
Posté le 06-11-2007 à 00:02:39  profilanswer
 

ben poste ton code complet alors. Parceque ta ligne 3 ici...
 
ps : et tu exécutes ça dans quoi ? (parcequ'on voit tellement de trucs...)
 
ps² : si tu mets un "AS" ou un "IS" avant/à la place de BEGIN, ça donne quoi ?


Message édité par MagicBuzz le 06-11-2007 à 00:03:34
n°1637643
nycius
Ich liebe dich !
Posté le 06-11-2007 à 14:29:02  profilanswer
 

Voici mon erreur :  
 

Code :
  1. Erreur SQL !
  2. DELIMITER | CREATE PROCEDURE selectall() BEGIN SELECT name FROM shopbot_products; END |
  3. 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 'DELIMITER | CREATE PROCEDURE selectall() BEGIN SELECT name FROM shopbot_produ' at line 1


 
Avec le code :  

Code :
  1. $sql = "DELIMITER |
  2. CREATE PROCEDURE selectall()
  3. BEGIN
  4. SELECT name FROM shopbot_products;
  5. END |";

n°1637647
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-11-2007 à 14:35:17  profilanswer
 

le $sql qui traine me laisse craindre le pire...
Serait-ce un bout de requête que tu cherches à executer en php?
Si oui:
- dans quel but se retrouve-t-il dans du php?
- de mémoire, je crois qu'il faut passer par mysqli pour pouvoir utiliser les proc stockés
 
Dernière question: quelle est ta version de mysql? ( car les procs sont dispos uniquement à partir de la 5)

n°1637649
nycius
Ich liebe dich !
Posté le 06-11-2007 à 14:41:32  profilanswer
 

anapajari a écrit :

le $sql qui traine me laisse craindre le pire...
Serait-ce un bout de requête que tu cherches à executer en php?
Si oui:
- dans quel but se retrouve-t-il dans du php?
- de mémoire, je crois qu'il faut passer par mysqli pour pouvoir utiliser les proc stockés
 
Dernière question: quelle est ta version de mysql? ( car les procs sont dispos uniquement à partir de la 5)


 
 
J'essaye via PHP car mysql query ou phpmyadmin passe pas
version 5 de mysql

n°1637666
MagicBuzz
Posté le 06-11-2007 à 15:07:54  profilanswer
 

delimiter, à mon avis c'est pas du transact sql, mais une instruction du requêteur. donc pas de ça dans ton php.

n°1637745
Sebastien
Posté le 06-11-2007 à 16:56:52  profilanswer
 

pas plutot

nycius a écrit :


 

Code :
  1. $sql = "DELIMITER |
  2. CREATE PROCEDURE selectall()
  3. DECLARE
  4. var_a shopbot_products.name%type
  5. BEGIN
  6. SELECT name into var_a FROM shopbot_products;
  7. END |";



Message édité par Sebastien le 06-11-2007 à 16:57:14

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySql] Soucis avec procédure stockée (newbie)

 

Sujets relatifs
Besoin d aide pour Mettre a jour Mysql avec un formulaire[Mysql] opérateur 'ou'
[Résolu] Article et image dans MySQL[PHP/MySQL] Problème très bizarre :S
[Résolu] Url stockée et lien HTMLBesoin d aide en php et MySQL
[Résolu] Fonction allergique à une requête MySQLLost connection to MySQL server during query
[Résolu] Soucis avec toggle Javascriptbesion aide optimisation php mysql
Plus de sujets relatifs à : [MySql] Soucis avec procédure stockée (newbie)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR