[ zgas @ 04.09.2008. 12:21 ] @
Zelim da kreiram proceduru.
prociteo sam jedno polje sledece vrednosti : "1,2,4,6,7"

Zelim nekako da izvrsim LOOP ovih numerickih vrednosti, tj, da svaku pojedinacnu vrednost upisem kao poseban red u drugoj tabeli

Vizuelno objasnjenje

tabela1
----------------
red1 | 1,2,4,6,7|
----------------

nakon upotrebe procedure dobijam tabelu 2

tabela2
------------
| red 1 | 1 |
------------
| red 2 | 2 |
------------
| red 3 | 4 |
------------
| red 4 | 6 |
------------
| red 5 | 7 |
------------

Znaci pitanje je: kako izvrsiti LOOP kroz string numericke delove?

Nadam se da ste me razumeli.

[ Shinhan @ 05.09.2008. 07:42 ] @
Ovo bi moglo trivijalno da se uradi u php, python ili bilo kom drugom jeziku. Da li je tvoje pitanje kako to da uradiš u (kom jeziku?) ili u MySQL (što bi bilo vrlo komplikovano)?
[ cdorde @ 05.09.2008. 09:26 ] @
Evo funkcije koja vraća broj redova i istovremeno insertuje u tabelu temp. Ovo naravno treba prilagoditi potrebama.
Ulazni parametri u funkciju su ulazni string i delimeter npr.

select izListeUTabelu('1,2,3,4,5,6',',')

će kao rezultat vratiti 6 a u tabeli temp će biti upisano šest redova sa sadržajem prvi red 1, drugi red 2 ... šesti red 6.

Napomena: Funkcija se kreira u semi hoteliptv

DELIMITER $$

DROP PROCEDURE IF EXISTS `hoteliptv`.`izListeUTabelu` $$
CREATE FUNCTION `hoteliptv`.`izListeUTabelu` (ulaz VARCHAR(255),delimeter VARCHAR(255)) RETURNS INT
BEGIN
DECLARE priv VARCHAR(255);
DECLARE jedan VARCHAR(255);
DECLARE koliko,param1 INT;

set priv=concat(ulaz,',');
SET koliko=0;
REPEAT

set param1= instr(priv,delimeter);
if param1>0 then
set koliko=koliko+1;
set jedan=substr(priv,1,param1-1);
set priv=substr(priv,param1+1);

insert into temp(value) values(jedan);
end if;

UNTIL param1=0 END REPEAT;

RETURN koliko;

END $$

DELIMITER ;
[ zgas @ 05.09.2008. 16:00 ] @
>
>
Hvala puno "cdorde" ovo je resenje.

Hvala!