Maison >base de données >tutoriel mysql >Comment puis-je transmettre des tableaux aux procédures stockées MySQL ?

Comment puis-je transmettre des tableaux aux procédures stockées MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-08 18:49:121021parcourir

How Can I Pass Arrays to MySQL Stored Procedures?

Transmission de tableaux aux routines stockées MySQL

Une exigence courante consiste à transmettre des tableaux de valeurs en tant que paramètres aux routines stockées MySQL. Cependant, contrairement à de nombreux autres systèmes de gestion de bases de données, MySQL ne prend pas en charge cette fonctionnalité de manière native.

Une solution viable consiste à convertir le tableau en chaîne et à le transmettre en argument. Cette chaîne peut ensuite être utilisée dans la routine stockée pour créer une table temporaire à l'aide des instructions CONCAT() et SELECT INTO :

DELIMITER $$

CREATE PROCEDURE GetFruits(IN fruitArray VARCHAR(255))
BEGIN

  SET @sql = CONCAT('SELECT * FROM Fruits WHERE Name IN (', fruitArray, ')');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;

END
$$

DELIMITER ;

En passant le tableau chaîne dans la procédure GetFruits, vous pouvez créer dynamiquement une table temporaire. table contenant les noms de fruits spécifiés, permettant un traitement ultérieur dans votre script.

Pour utiliser cette procédure, vous pouvez attribuer le tableau de chaînes à une variable MySQL, puis appeler le fichier stocké. routine :

SET @fruitArray = '\'apple\',\'banana\'';
CALL GetFruits(@fruitArray);

Cette approche vous permet effectivement de transmettre un tableau de valeurs à une routine stockée dans MySQL, facilitant ainsi les opérations de base de données complexes impliquant des listes de chaînes de longueur variable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn