2017-09-21 24 views
0

i ont une procédure stockée de baseSELECT .. EN renvoie plusieurs lignes - Mysql

DECLARE user_o VARCHAR(50); 

SELECT user_name INTO user_o FROM users WHERE topic_id = 54 AND entry_time BETWEEN 
2017-09-17 AND date_add(CURRENT_DATE, INTERVAL 1 DAY) ORDER BY entry_time ASC 
LIMIT 10; 

cela me jette l'erreur # 1172 sql renvoie plusieurs lignes. aucune idée pourquoi?

mon objectif est d'avoir ce résultat mis

user_name | user_o 
    mike  mike 
    liz  liz 
    helen  helen 
    her  her 
+0

La table user_o existe-t-elle déjà? – Tom

+0

@tom damn. j'ai oublié d'ajouter l'instruction FROM. question éditée. merci de l'indiquer –

+0

utilisateurs inclludes user_name, topic_id, entry_time et user_o est une déclaration –

Répondre

2

Son parce que vous insérez le résultat « dans » une variable et parce que le résultat est plus qu'une seule valeur, d'où l'erreur.

Vous avez une limite de 10, essayez de passer à 1, cela va réparer, si vous voulez plusieurs valeurs retournées, alors vous devez les gérer dans un jeu d'enregistrements.

+0

oui mais ce que je veux faire est: prendre la table de formulaire 'mike' que de le mettre dans le 'user_o'. Que faire pour chaque 'nom_utilisateur' dans la table 'utilisateurs'. je veux 10 nom d'utilisateur pas 1. explication plus détaillée pour cela? –

+0

essayez ceci, https://stackoverflow.com/questions/37633369/how-to-get-recordset-from-internal-call-to-stored-procedure – SPlatten