sobota, 14 marca 2009

MySQL i procedury

Dziś zdarzyło mi się popełnić procedurę w MySQL-u. O dziwo nawet działa :) ale co mi tam, jest prosta jak budowa cepa i ma zrealizować jedno zadanie: a mianowicie wylosować jeden element z tabeli o nieciągłym numerowaniu w jak najmniejszej ilości prób. A oto Ona

CREATE DEFINER = 'root'@'localhost'
PROCEDURE `new_proc`(
OUT wynik CHAR,
OUT ile INTEGER(11)
)
NOT DETERMINISTIC
READS SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN

declare rnd DOUBLE;
DECLARE ID_element int;
declare ile_elem int;
declare wyn_zap char(20);


select max(id) INTO ile_elem from `documents`;

set ile = 0;

REPEAT

set rnd = RAND() * ile_elem;

set ID_element = rnd;
set ile = ile + 1;
select `tag` INTO wyn_zap
from `documents`
where `documents`.`id` = ID_element
limit 1;

until (wyn_zap is not NULL) end repeat;

set wynik = left(wyn_zap,1);

END;

Brak komentarzy:

Prześlij komentarz