J'essaie de passer un tableau de valeurs de php à des procédures stockées mysql comme liste de paramètres et comment utiliser le tableau dans la procédure stockée. La requête dans la procédure a trois instructions IN dedans là donc je voudrais faire IN(@listOfids)
où @ listOfids est 1,2,3,4 (un tableau implosé de php).Passer un tableau dans une procédure stockée
Répondre
alors je suis une solution de contournement qui consiste à concaténer la demande de recherche et les paramètres de sorte que le pseudo-code est
CREATE PROCEDURE `related_stories`(IN param1 VARCHAR(255), IN param2 VARCHAR(255), IN param3 VARCHAR(255), IN publishDate INT(11), IN tlimit INT(11))
BEGIN
SET @query =CONCAT('
select s.* from
(
select * from
(
SELECT something where condition IN (',param1,')
) as table1
UNION ALL
select * from
(
SELECT something where condition IN (',param2,')
) as table2
UNION ALL
select * from
(
SELECT something where condition IN (',param3,')
) as table3
) as s
WHERE (s.publish_date < ',publishDate,')
GROUP BY id limit ',tlimit,';');
PREPARE stmtInsert FROM @query;
EXECUTE stmtInsert;
END
param1, param2, param3 sont des tableaux implosé qui est transmise par l'intermédiaire de php par exemple ('1,2 3,4 '). J'espère que cela aidera quelqu'un
@Akeem - Si la solution ci-dessus fonctionne pour vous, marquez votre réponse comme réponse acceptable afin que votre question n'apparaisse plus dans la liste "sans réponse". – Guss
J'ai essayé mais j'ai reçu un message disant que je devais attendre 48 heures avant d'accepter ma propre réponse. – Akeem
Merci, c'est ce dont j'avais besoin à la rigueur. Je pense qu'il est possible de vider la liste d'id dans une table temporaire, mais je le ferai quand j'aurai plus de temps. – MvcCmsJon
Je pense que le problème principal est que MySQL ne prend pas en charge les tableaux en tant que type de données. Vous devez former une relation one-to-many à une autre table qui contient une clé étrangère à vos données principales et les données du tableau.
Je pense que vous devez le transmettre en tant que csv. Mysql n'est pas très sympa avec le looping et c'est donc probablement mieux de le faire dehors de toute façon. En ce qui concerne les langages de procédure stockés, je trouve que Mysql manque vraiment.
- 1. Passer la procédure stockée à sp_send_dbmail
- 2. java - transmission d'un tableau dans une procédure stockée oracle
- 3. Comment puis-je passer un caractère null dans une méthode de procédure stockée dans C# 3.0?
- 4. Exécuter une procédure stockée dans une vue?
- 5. Comment passer un <int> Nullable dans une procédure stockée ... à partir de F #?
- 6. Comment passer une limite à une requête dans une procédure stockée mysql 5?
- 7. Exécution d'un FuncView dans une procédure stockée
- 8. sql2000 boucle dans une procédure stockée
- 9. Procédure stockée dans une instruction d'insertion
- 10. comment créer une procédure stockée dans Oracle qui accepte un tableau de paramètres
- 11. Passer un appel de procédure stockée d'un contexte de données LINQ à une autre méthode. C#
- 12. « dans » la liste via la procédure stockée
- 13. Supprimer dans la procédure stockée
- 14. Utilisation d'un paramètre tristate dans une procédure stockée
- 15. paramètres de procédure stockée MySQL
- 16. DbNull.Value Paramètre de procédure stockée?
- 17. procédure stockée retourne varchar
- 18. Recherche d'une procédure stockée
- 19. Réinitialiser @@ procédure stockée FETCH_STATUS
- 20. mysql-procédure stockée:
- 21. Aide avec un IF dans SQL Server Procédure stockée
- 22. structure de procédure stockée
- 23. Comment simuler une impression dans une procédure stockée MySQL
- 24. Exécuter une requête dans une procédure stockée Oracle
- 25. comment exécuter une procédure stockée en continu?
- 26. DESCENTE/ASCENDING paramètre à une procédure stockée
- 27. Syntaxe de procédure stockée
- 28. SubSonic Retour ExecuteSingle pour une procédure stockée
- 29. Comment appeler une procédure stockée depuis iReport?
- 30. Problème de procédure stockée SQL Server appelant une autre procédure stockée
Pourriez-vous poster une partie de votre code en modifiant votre réponse afin que nous puissions mieux comprendre ce que vous essayez d'accomplir et de travailler à partir de là? – lpfavreau