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

Soucis avec procédure stockée (newbie) [MySql] - SQL/NoSQL - Programmation

Marsh Posté le 01-11-2007 à 14:24:10    

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:

Reply

Marsh Posté le 01-11-2007 à 14:24:10   

Reply

Marsh Posté le 05-11-2007 à 15:16:26    

up

Reply

Marsh Posté le 05-11-2007 à 15:28:58    

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

Reply

Marsh Posté le 05-11-2007 à 17:15:33    

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:

Reply

Marsh Posté le 05-11-2007 à 18:11:05    

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

Reply

Marsh Posté le 05-11-2007 à 18:27:29    

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

Reply

Marsh Posté le 05-11-2007 à 18:54:22    

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

Reply

Marsh Posté le 05-11-2007 à 19:17:35    

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...

Reply

Marsh Posté le 05-11-2007 à 19:19:56    

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.

Reply

Marsh Posté le 05-11-2007 à 20:10:16    

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.

Reply

Marsh Posté le 05-11-2007 à 20:10:16   

Reply

Marsh Posté le 06-11-2007 à 00:02:39    

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
Reply

Marsh Posté le 06-11-2007 à 14:29:02    

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 |";

Reply

Marsh Posté le 06-11-2007 à 14:35:17    

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)

Reply

Marsh Posté le 06-11-2007 à 14:41:32    

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

Reply

Marsh Posté le 06-11-2007 à 15:07:54    

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

Reply

Marsh Posté le 06-11-2007 à 16:56:52    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed