web-dev-qa-db-fra.com

MySQL: Sélection de plusieurs champs dans plusieurs variables dans une procédure stockée

Puis-je sélectionner plusieurs colonnes dans plusieurs variables dans la même requête de sélection dans MySQL?

Par exemple:

DECLARE iId INT(20);
DECLARE dCreate DATETIME;

SELECT Id INTO iId, dateCreated INTO dCreate 
FROM products
WHERE pName=iName;

Quelle est la syntaxe correcte pour cela?

92
aHunter

Votre syntaxe n'est pas tout à fait correct: vous devez répertorier les champs dans l'ordre précédant INTO et les variables cible correspondantes après:

SELECT Id, dateCreated
INTO iId, dCreate
FROM products
WHERE pName = iName
196
martin clayton

========== Conseiller ===========

@martin clayton La réponse est correcte, mais il ne s'agit que d'un conseil.

Évitez d'utiliser des variables ambiguës dans la procédure stockée.

Exemple :

SELECT Id, dateCreated
INTO id, datecreated
FROM products
WHERE pName = iName

L'exemple ci-dessus provoquera une erreur (erreur de valeur nulle)

L'exemple donné ci-dessous est correct. J'espère que cela a du sens.

Exemple :

SELECT Id, dateCreated
INTO val_id, val_datecreated
FROM products
WHERE pName = iName

Vous pouvez également les rendre sans ambiguïté en référençant la table, comme:

[Crédit: maganap ]

SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p 
WHERE pName = iName
9
sijo vijayan

À la place de la réponse de Martin, vous pouvez également ajouter la partie INTO à la fin de la requête pour la rendre plus lisible:

SELECT Id, dateCreated FROM products INTO iId, dCreate
2
ibai