Cela signifie qu'une des requêtes SELECT de ta procédure retourne plus d'une ligne, et MySQL ne peut affecter plusieurs valeurs à une variable.
Je suppose que cette requête :
SELECT IDCLIENT FROM clients WHERE RAISONSOCIALE LIKE nomClient
Retourne plusieurs valeurs ... essaye de l'exécuter dans la console (ou PHPMyAdmin) en remplaçant nomClient par la valeur qui fait planter la procédure.
Au passage, il existe une fonction LAST_INSERT_ID() qui permet de simplifier ton insertion dans la table projet
BEGIN
SET @numClient = (
SELECT IDCLIENT
FROM clients
WHERE RAISONSOCIALE LIKE nomClient
);
INSERT INTO projets( ABREGEPROJET, NOMPROJET, TYPEPROJET )
VALUES ( abregeProjet, nomProjet, typeProjet );
SET @numProjet = LAST_INSERT_ID();
INSERT INTO commander ( IDCLIENT, CODEPROJET )
VALUES ( @numClient, @numProjet );
END
Dans tous les cas, il serait plus judicieux de proposer dans ton application une liste déroulante des clients avec leur id en valeur et leur nom en libellé, et d'exécuter la procédure directement avec l'id client choisi plutôt que son nom ... Ta procédure serait alors :
BEGIN
INSERT INTO projets( ABREGEPROJET, NOMPROJET, TYPEPROJET )
VALUES ( abregeProjet, nomProjet, typeProjet );
INSERT INTO commander ( IDCLIENT, CODEPROJET )
VALUES ( idClient, LAST_INSERT_ID() );
END
merci MR01 je comprends mieux maintenant pourquoi , je vais essayer de faire ce que vous me conseillez merci encore à vous deux
plusieurs requetes dans une procedure stockée
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pas d'aide concernant le code par MP, le forum est là pour ça :)