过程,设置变量,重复直到,来自一个变量的子串,mysql

时间:2015-04-02 20:54:23

标签: mysql stored-procedures insert substring repeat

我正在寻找sql程序的帮助。 我想循环使用每个用户名循环,并从两个输入参数中添加别名,并将其添加到表用户中。我有两个程序。

抱歉波兰变量名称和程序名称。

我的第一个程序是

    CREATE DEFINER=`root`@`localhost` PROCEDURE `dodajZawodnika`(IN `dane` VARCHAR(50), IN `wyswietlanie` VARCHAR(50))
        NO SQL

    BEGIN 
        IF (SELECT 1 = 1 from zawodnicy where danezawodnika = dane AND dowyswietlenia=wyswietlanie) THEN

            BEGIN 
                Select id from zawodnicy where danezawodnika=dane AND dowyswietlenia=wyswietlanie;
            END;

            ELSE
            BEGIN

            Insert INTO zawodnicy (danezawodnika, dowyswietlenia) VALUES(dane, wyswietlanie);



            SELECT last_insert_id() AS ID;

            END;
        END IF; 
END;

我的第二个程序是

CREATE DEFINER=`root`@`localhost` PROCEDURE `stworzSklad`(IN `dane` VARCHAR(1500), IN `pseudo` VARCHAR(1000))
    NO SQL
BEGIN 

    DECLARE counter INTEGER;
    DECLARE zawodnik VARCHAR(1500);
    DECLARE pseudonim VARCHAR(1000);
    DECLARE zawodnicy VARCHAR(1500);
    DECLARE pseudonimy VARCHAR(1000);

    DECLARE exit handler for sqlexception
      BEGIN
        -- ERROR
      ROLLBACK;
    END;

    DECLARE exit handler for sqlwarning
     BEGIN
        -- WARNING
     ROLLBACK;
    END;

    set counter = 0;
    set @zawodnicy = dane;
    set @pseudonimy = psuedo;

    select @zawodnicy, @pseudonimy;

    REPEAT
        set zawodnik=(SELECT TRIM(SUBSTRING_INDEX(@zawodnicy, ',', 1)));
        set pseudonim=(SELECT TRIM(SUBSTRING_INDEX(@pseudonimy, ',', 1)));

        call dodajZawodnika(zawodnik, pseudonim);

        SELECT RIGHT(@zawodnicy, TRIM(length(@zawodnicy) - length(SUBSTRING_INDEX(@zawodnicy, ',', 1)) - 1)) into @zawodnicy;
        SELECT RIGHT(@pseudonimy, TRIM(length(@pseudonimy) - length(SUBSTRING_INDEX(@pseudonimy, ',', 1)) - 1)) into @pseudonimy;

        select zawodnik as 'zawodnik', pseudonim as 'pseudonim', dane as 'dane', pseudo as 'pseudo', @zawodnicy as 'zawodnicy', @pseudonimy as 'pseudonimy';

        set counter = counter + 1;

    UNTIL (@zawodnicy = ''  or counter = 30)
    END REPEAT;

    select counter;

END

我在大约2个小时内与它战斗。 我想使用此插入的事务。 请帮我解决这个小问题。 如何以正确的方式做到这一点? 现在,调用stworzSklad程序进行无限循环(ofc没有计数器直到条件)并且任何用户都没有插入我的表中。

干杯!

0 个答案:

没有答案