Mysql
 sql >> Base de données >  >> RDS >> Mysql

l'insertion de valeurs multiples fonctionne-t-elle dans les procédures mysql ?

Je n'ai pas de serveur MySQL, il y a donc probablement des erreurs de syntaxe et des erreurs +1 (c'est-à-dire qu'il peut ne pas capturer le dernier de la liste, ne pas dépasser le premier élément, etc., problèmes résolus en mettant un +1 dans le code), mais vous voulez essentiellement remplacer votre instruction INSERT par quelque chose de ceci.

DECLARE INT _CURSOR 0;
DECLARE INT _TOKENLENGTH 0;
DECLARE VARCHAR _TOKEN NULL;

SELECT LOCATE(str, ",", _CURSOR) - _CURSOR INTO _TOKENLENGTH;

LOOP

    IF _TOKENLENGTH <= 0 THEN
        SELECT RIGHT(str, _CURSOR) INTO _TOKEN;
        INSERT INTO input_data1(mobile) VALUE _TOKEN;
        LEAVE;
    END IF;

    SELECT SUBSTRING(str, _CURSOR, _TOKENLENGTH) INTO _TOKEN;

    INSERT INTO input_data1(mobile) VALUE _TOKEN;

    SELECT _CURSOR + _TOKENLENGTH + 1 INTO _CURSOR;

    SELECT LOCATE(str, ",", _CURSOR + 1) - _CURSOR INTO _TOKENLENGTH;

END LOOP;

Votre appel de fonction serait alors quelque chose comme

EXEC mobile_series1('9619825525,9619825255,9324198256')