pawelkl

Untitled

Oct 25th, 2011
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.38 KB | None | 0 0
  1. //CREATE OR REPLACE PROCEDURE pr_test
  2. //(
  3. //    IN zm_nrzawodnika INT,
  4. //    OUT ilosc INT
  5. //)
  6. //BEGIN
  7.  
  8. //SELECT COUNT(*) INTO ilosc FROM wyniki WHERE nrzawodnika=zm_nrzawodnika;
  9.  
  10. //END;
  11.  
  12. //BEGIN
  13. //DECLARE @nrzawodnika INT;
  14. //DECLARE @ilosc INT;
  15. //SET @nrzawodnika=33;
  16. //CALL pr_test (@nrzawodnika, @ilosc);
  17. //message 'ilosc wynikow: ' ||@ilosc TO client;
  18. //END;
  19.  
  20. //CREATE OR REPLACE FUNCTION f_test
  21. //(
  22. //    IN nr_klubu INT
  23. //)
  24. //RETURNS VARCHAR(50)
  25. //BEGIN
  26. //  DECLARE @nazwaklubu VARCHAR(50);
  27. //  SELECT nazwaklubu INTO @nazwaklubu FROM kluby WHERE nrklubu=nr_klubu;
  28. //  RETURN @nazwaklubu;
  29. //END;
  30.  
  31. //SELECT f_test(7);
  32.  
  33.  
  34. ////a+(b-a)*(np.0,7) - wzor na rokzklad rownomierny
  35.  
  36. //SELECT rand();
  37.  
  38. ////napisac funkcję, na wejciu a i b, na wyjsciu wylosowana liczba
  39.  
  40. ;
  41.  
  42. CREATE OR REPLACE PROCEDURE pr_tw_tabele
  43. (
  44.     IN a INTEGER,
  45.     IN b INTEGER
  46. )
  47. BEGIN
  48.     DECLARE curr INT;
  49.     IF NOT EXISTS (SELECT liczba FROM test WHERE liczba<=b AND liczba>=a) THEN
  50.             SET curr=a;
  51.             while curr<=b loop
  52.                 INSERT INTO test VALUES(curr,0,0);
  53.                 SET curr=curr+1
  54.             END loop;
  55.     endif;
  56. END;
  57.  
  58. CREATE OR REPLACE FUNCTION fn_liczba_losowa
  59. (
  60.  IN a INTEGER,
  61.  IN b INTEGER
  62. )
  63. RETURNS INTEGER
  64. BEGIN
  65.     DECLARE @liczba INTEGER;
  66.     DECLARE @tmp INTEGER;
  67.     IF (a>b) THEN
  68.         SET @tmp = a;
  69.         SET a=b;
  70.         SET b=@tmp;
  71.     END IF;
  72.  
  73.     SET @liczba=a+(b+1-a)*rand();
  74. //  ELSE
  75. //      SET @liczba=b+(a+1-b)*rand();
  76. //  END IF;
  77.     RETURN @liczba
  78. END;
  79.  
  80. CREATE OR REPLACE PROCEDURE pr_akt_proc
  81. (
  82.     IN a INTEGER,
  83.     IN b INTEGER
  84. )
  85. BEGIN
  86.     DECLARE @los INT;
  87.     DECLARE @suma INT;
  88.     SET @los = fn_liczba_losowa(a,b);
  89.     UPDATE test
  90.         SET czestotliwosc = czestotliwosc + 1
  91.         WHERE liczba = @los;
  92.     SET @suma = (SELECT SUM(czestotliwosc) FROM test);
  93.     UPDATE test
  94.         SET procent = czestotliwosc * 100 / @suma;
  95. //      SET procent = CAST ( czestotliwosc AS DOUBLE) / @suma * 100;
  96. END;
  97.  
  98. ////
  99.  
  100. CREATE TABLE test
  101. (
  102. liczba INT,
  103. czestotliwosc INT,
  104. procent INT
  105. );
  106.  
  107. CALL pr_tw_tabele(5,10);
  108.  
  109. CALL fn_liczba_losowa(10,20);
  110.     SELECT fn_liczba_losowa(10,20);
  111.  
  112. CALL pr_akt_proc(5,10);
  113.  
  114. SELECT * FROM test;
  115.  
  116. DROP TABLE test;
  117.  
  118. CREATE event "f_rand"
  119. schedule "s_rand" START TIME '13:00' every 1 seconds
  120. handler
  121. BEGIN
  122.     CALL pr_akt_proc(5,10);
  123. END;
  124.  
  125.  
  126.  
  127. ////tabela 'test', 3 kolumny: liczba, czestotliwosc(ile razy byla wylosowana dana liczba), czestotliwosc w % (ile % wszystkich losowań stanowia wylosowania danej liczby)
  128. ////losujemy liczby z przedzialu [a,b],
  129. ////w pierwszej kolumnie: wiersze a, a+1, a+2 itd.
  130. ////opracowac zdarzenie (podobno PROCEDURE) ktore bedzie losowala wartosc i wpisywala w odpowiednim miejscu
  131.  
  132.  
  133. ////tyle juz mam :P
  134.  
  135.  
  136.  
  137. //DESCRIBE test;
  138.  
  139. CREATE OR REPLACE PROCEDURE pr_test
  140. (
  141. IN a INT,
  142. IN b INT
  143. )
  144. BEGIN
  145.     DECLARE curr INT;
  146.     DECLARE suma INT;
  147.     IF NOT EXISTS (SELECT liczba FROM test WHERE liczba=a) THEN
  148.             SET curr=a;
  149.             while curr<=b loop
  150.                 INSERT INTO test VALUES(curr,0,0);
  151.                 SET curr=curr+1
  152.             END loop;
  153.     endif;
  154.     UPDATE test
  155.         SET czestotliwosc=test.czestotliwosc+1
  156.         WHERE liczba=(SELECT fn_liczba_losowa (a,b));
  157.     SET suma=(SELECT SUM(czestotliwosc) FROM test);
  158.     SET curr=a;
  159.  
  160.     while curr<=b loop
  161.         UPDATE test
  162.             SET procent=CAST(czestotliwosc AS DOUBLE)/suma*100 WHERE liczba = curr;
  163.         SET curr=curr+1;
  164.     END loop;
  165. END;
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172. CREATE TABLE test
  173. (
  174. liczba INT,
  175. czestotliwosc INT,
  176. procent INT
  177. );
  178.  
  179. DROP TABLE test;
  180.  
  181. CALL pr_test(5,76);
  182.  
  183. SELECT * FROM test;
  184.  
  185.  
Advertisement
Add Comment
Please, Sign In to add comment