Réécrivez le titre comme suit : Passer un tableau d'entiers à la procédure stockée MySQL
P粉275883973
P粉275883973 2023-11-03 10:46:21
0
2
662

Je souhaite créer une procédure stockée qui reçoit un tableau d'entiers et d'autres entrées comme :

CREATE PROCEDURE test (field1 varchar(4), field2 varchar(4), array varchar (255))

Dans la procédure stockée, je souhaite l'utiliser comme ceci :

...
WHERE some_field IN (array)
...

Le problème est que de cette façon, je n'obtiens que les lignes correspondant au premier entier du tableau.

Y a-t-il un moyen de le faire fonctionner (j'ai aussi essayé d'utiliser FIND_IN_SET 但它的作用与 IN exactement de la même manière) ?

L'appel que j'ai passé pour tester la procédure stockée était CALL test (12, 13, '1, 2, 3').

P粉275883973
P粉275883973

répondre à tous(2)
P粉590428357

Il n'y a pas de notion de tableau. C'est donc probablement ce que vous pouvez faire

Votre array变量的值为'1, 2, 3' comme ficelle

  1. Divisez la chaîne en utilisant , comme délimiteur,

  2. Insérez chaque valeur dans une table temporaire

Votre table temporaire aura donc 1,2,3

En fin de compte, utilisez simplement votre table temporaire

P粉713866425

FIND_IN_SET() fonctionne, mais vous ne pouvez pas avoir d'espaces dans la chaîne numérique.

Démo :

mysql> select find_in_set(2, '1, 2, 3');
+---------------------------+
| find_in_set(2, '1, 2, 3') |
+---------------------------+
|                         0 |
+---------------------------+

mysql> select find_in_set(2, '1,2,3');
+-------------------------+
| find_in_set(2, '1,2,3') |
+-------------------------+
|                       2 |
+-------------------------+

Vous devez donc former la liste sans espaces avant de la transmettre à la procédure, ou utiliser REPLACE() dans la procédure pour supprimer les espaces.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal