DELIMITER $$ DROP PROCEDURE IF EXISTS `root`.`proc1` $$ CREATE DEFINER = `root` @ `localhost` PROCEDURE `proc1`() BEGIN CREATE TEMPORARY TABLE temp ( `imie` VARCHAR(45), `nazwisko` VARCHAR(45) ); INSERT INTO temp (imie, nazwisko) (SELECT imie, nazwisko FROM `osoby`); /* tu pewne operacje na tabeli temp */ SELECT * FROM temp; DROP TABLE temp; END $$ DELIMITER;
W procedurze skladowanej tworze tymczasowa tabele, do ktorej wrzucam dane z tabeli 'osoby'. Nastepnie wykonuje pewne operacje na tabeli tymczasowej (ktore tu pominalem w celu nie zaciemniana skryptu) i zwracam obrobione dane przy pomocy select.
Pytanie: czy wielokrotne wywolanie tej procedury w tym samym czasie nie spowoduje jednoczesnej pracy na tej samej tabeli temp, co spowoduje blad albo przeklamania w danych? W bazach MS SQL korzystalem ze zmiennej typu table (cos jak ponizej). Niestety w MySQL to nie dziala, albo coz zle robie....
DELIMITER $$ DROP PROCEDURE IF EXISTS `root`.`proc1` $$ CREATE DEFINER = `root` @ `localhost` PROCEDURE `proc1`() BEGIN DECLARE temp TABLE(imie VARCHAR(45), nazwisko VARCHAR(45)); INSERT INTO temp (imie, nazwisko) (SELECT imie, nazwisko FROM `osoby`); /* tu pewne operacje na tabeli temp */ SELECT * FROM temp; END $$ DELIMITER;
Jak rozwiazac ten problem?