Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //CREATE OR REPLACE PROCEDURE pr_test
- //(
- // IN zm_nrzawodnika INT,
- // OUT ilosc INT
- //)
- //BEGIN
- //SELECT COUNT(*) INTO ilosc FROM wyniki WHERE nrzawodnika=zm_nrzawodnika;
- //END;
- //BEGIN
- //DECLARE @nrzawodnika INT;
- //DECLARE @ilosc INT;
- //SET @nrzawodnika=33;
- //CALL pr_test (@nrzawodnika, @ilosc);
- //message 'ilosc wynikow: ' ||@ilosc TO client;
- //END;
- //CREATE OR REPLACE FUNCTION f_test
- //(
- // IN nr_klubu INT
- //)
- //RETURNS VARCHAR(50)
- //BEGIN
- // DECLARE @nazwaklubu VARCHAR(50);
- // SELECT nazwaklubu INTO @nazwaklubu FROM kluby WHERE nrklubu=nr_klubu;
- // RETURN @nazwaklubu;
- //END;
- //SELECT f_test(7);
- ////a+(b-a)*(np.0,7) - wzor na rokzklad rownomierny
- //SELECT rand();
- ////napisac funkcję, na wejciu a i b, na wyjsciu wylosowana liczba
- ;
- CREATE OR REPLACE PROCEDURE pr_tw_tabele
- (
- IN a INTEGER,
- IN b INTEGER
- )
- BEGIN
- DECLARE curr INT;
- IF NOT EXISTS (SELECT liczba FROM test WHERE liczba<=b AND liczba>=a) THEN
- SET curr=a;
- while curr<=b loop
- INSERT INTO test VALUES(curr,0,0);
- SET curr=curr+1
- END loop;
- endif;
- END;
- CREATE OR REPLACE FUNCTION fn_liczba_losowa
- (
- IN a INTEGER,
- IN b INTEGER
- )
- RETURNS INTEGER
- BEGIN
- DECLARE @liczba INTEGER;
- DECLARE @tmp INTEGER;
- IF (a>b) THEN
- SET @tmp = a;
- SET a=b;
- SET b=@tmp;
- END IF;
- SET @liczba=a+(b+1-a)*rand();
- // ELSE
- // SET @liczba=b+(a+1-b)*rand();
- // END IF;
- RETURN @liczba
- END;
- CREATE OR REPLACE PROCEDURE pr_akt_proc
- (
- IN a INTEGER,
- IN b INTEGER
- )
- BEGIN
- DECLARE @los INT;
- DECLARE @suma INT;
- SET @los = fn_liczba_losowa(a,b);
- UPDATE test
- SET czestotliwosc = czestotliwosc + 1
- WHERE liczba = @los;
- SET @suma = (SELECT SUM(czestotliwosc) FROM test);
- UPDATE test
- SET procent = czestotliwosc * 100 / @suma;
- // SET procent = CAST ( czestotliwosc AS DOUBLE) / @suma * 100;
- END;
- ////
- CREATE TABLE test
- (
- liczba INT,
- czestotliwosc INT,
- procent INT
- );
- CALL pr_tw_tabele(5,10);
- CALL fn_liczba_losowa(10,20);
- SELECT fn_liczba_losowa(10,20);
- CALL pr_akt_proc(5,10);
- SELECT * FROM test;
- DROP TABLE test;
- CREATE event "f_rand"
- schedule "s_rand" START TIME '13:00' every 1 seconds
- handler
- BEGIN
- CALL pr_akt_proc(5,10);
- END;
- ////tabela 'test', 3 kolumny: liczba, czestotliwosc(ile razy byla wylosowana dana liczba), czestotliwosc w % (ile % wszystkich losowań stanowia wylosowania danej liczby)
- ////losujemy liczby z przedzialu [a,b],
- ////w pierwszej kolumnie: wiersze a, a+1, a+2 itd.
- ////opracowac zdarzenie (podobno PROCEDURE) ktore bedzie losowala wartosc i wpisywala w odpowiednim miejscu
- ////tyle juz mam :P
- //DESCRIBE test;
- CREATE OR REPLACE PROCEDURE pr_test
- (
- IN a INT,
- IN b INT
- )
- BEGIN
- DECLARE curr INT;
- DECLARE suma INT;
- IF NOT EXISTS (SELECT liczba FROM test WHERE liczba=a) THEN
- SET curr=a;
- while curr<=b loop
- INSERT INTO test VALUES(curr,0,0);
- SET curr=curr+1
- END loop;
- endif;
- UPDATE test
- SET czestotliwosc=test.czestotliwosc+1
- WHERE liczba=(SELECT fn_liczba_losowa (a,b));
- SET suma=(SELECT SUM(czestotliwosc) FROM test);
- SET curr=a;
- while curr<=b loop
- UPDATE test
- SET procent=CAST(czestotliwosc AS DOUBLE)/suma*100 WHERE liczba = curr;
- SET curr=curr+1;
- END loop;
- END;
- CREATE TABLE test
- (
- liczba INT,
- czestotliwosc INT,
- procent INT
- );
- DROP TABLE test;
- CALL pr_test(5,76);
- SELECT * FROM test;
Advertisement
Add Comment
Please, Sign In to add comment