pawelkl

wozniak3-v3-big

Nov 5th, 2011
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.73 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE pr_nowy_klub
  2. (
  3. IN id_klubu INT,
  4. OUT nazwa_klubu VARCHAR(40)
  5. )
  6. BEGIN
  7. SELECT NazwaKlubu INTO nazwa_klubu FROM Kluby WHERE id_klubu = NrKlubu
  8. END;
  9.  
  10. BEGIN
  11. DECLARE @Nazwa VARCHAR(40);
  12. CALL pr_nowy_klub (10,@Nazwa);
  13. message @Nazwa TO client;
  14. END;
  15.  
  16. -----------------------------------------------------------------
  17.  
  18. CREATE OR REPLACE FUNCTION liczba_zawodnikow
  19. (
  20. IN zapytanie INT
  21. )
  22. RETURNS INTEGER
  23.  
  24. BEGIN
  25. DECLARE @liczba_wierszy INTEGER;
  26. SET @liczba_wierszy = (SELECT COUNT(NrZawodnika) FROM Zawodnicy WHERE zapytanie = NrKlubu);
  27. RETURN @liczba_wierszy;
  28. END;
  29.  
  30. SELECT liczba_zawodnikow(10);
  31.  
  32. -------------------- MOJE
  33.  
  34. create or replace function nazwaklubu
  35. (
  36. IN @nazwaklubu int
  37. )
  38. returns integer
  39. begin
  40. declare @nr integer;
  41. set @nr = (select NrKlubu
  42. from Kluby
  43. where NazwaKlubu = @nazwaklubu);
  44. return @nr;
  45. end;
  46.  
  47. select nazwaklubu('UWKS WAT Warszawa');
  48.  
  49. ----
  50. select * from kluby;
  51. describe Kluby;
  52. ----
  53.  
  54. select rand();
  55.  
  56. ----
  57.  
  58. create or replace function fn_losuj
  59. (
  60. IN a int,
  61. IN b int
  62. )
  63. return real
  64. begin
  65. declare @wynik real;
  66. set @wynik = rand()*(b+1-a)+a;
  67. return @wynik;
  68. end;
  69.  
  70. select fn_losuj(5,10);
  71.  
  72.  
  73. CREATE OR REPLACE FUNCTION fn_losuj
  74. (
  75. IN a INTEGER,
  76. IN b INTEGER
  77. )
  78. RETURNS INTEGER
  79. BEGIN
  80. DECLARE @liczba INTEGER;
  81. SET @liczba=a+(b+1-a)*rand();
  82. RETURN @liczba
  83. END;
  84.  
  85.  
  86. CREATE OR REPLACE FUNCTION fn_losuj
  87. (
  88. IN a INTEGER,
  89. IN b INTEGER
  90. )
  91. RETURNS INTEGER
  92. BEGIN
  93. DECLARE @liczba INTEGER;
  94. DECLARE @tmp INTEGER;
  95. IF (a>b) THEN
  96. SET @tmp = a;
  97. SET a=b;
  98. SET b=@tmp;
  99. END IF;
  100. SET @liczba=a+(b+1-a)*rand();
  101. RETURN @liczba
  102. END;
  103.  
  104. select fn_losuj(15,10);
  105.  
  106. ---
  107. 1 tabela o konstrukcji
  108. liczba/czestotliwosc/procent
  109.  
  110. 2 procedura ktora wypelnia tabele danymi poczatkowymi
  111.  
  112. 3 procedura - arg. liczba losowan
  113. ---
  114.  
  115. describe testlosowe;
  116.  
  117. create or replace procedure init_testlosowe
  118. (
  119. IN a int,
  120. IN b int
  121. )
  122. begin
  123. declare @cur int;
  124. declare @tmp int;
  125. IF (a>b) THEN
  126. SET @tmp = a;
  127. SET a=b;
  128. SET b=@tmp;
  129. end if;
  130. set @cur = a;
  131. while @cur<b
  132. loop
  133. insert into testlosowe
  134. values (@cur, 0, 0);
  135. //(liczba)
  136. //values (@cur);
  137. set @cur=@cur+1;
  138. end loop
  139. end;
  140.  
  141. ----
  142. create or replace procedure stworz_testlosowe()
  143. begin
  144. create table testlosowe
  145. (
  146. liczba integer primary key,
  147. czestotliwosc integer,
  148. procent integer
  149. );
  150. end;
  151.  
  152.  
  153. ----
  154.  
  155. create or replace procedure toss_testlosowe
  156. (
  157. IN ilerazy integer,
  158. IN a int,
  159. IN b int
  160. )
  161. begin
  162. declare @cur int;
  163. declare @los int;
  164. set @cur = 0;
  165. while @cur < ilerazy
  166. loop
  167. set @los = fn_losuj(a,b);
  168. update testlosowe
  169. set czestotliwosc = czestotliwosc + 1
  170. where liczba = @los;
  171. set @cur = @cur + 1;
  172. end loop;
  173. end;
  174.  
  175. call toss_testlosowe(30,0,10);
  176.  
  177. ----
  178.  
  179. create or replace procedure pr_testlosowe
  180. (
  181. IN ilerazy integer
  182. )
  183. begin
  184. declare @los int;
  185. declare @cur int;
  186. declare a int;
  187. declare b int;
  188. set a = (select min(liczba) from testlosowe);
  189. set b = (select max(liczba) from testlosowe);
  190. while @cur < ilerazy
  191. loop
  192. set @los = fn_losuj(a,b);
  193. update testlosowe
  194. set czestotliwosc = czestotliwosc + 1
  195. where liczba = @los;
  196. end loop;
  197. end;
  198.  
  199. call pr_testlosowe(30);
  200.  
  201. ----
  202.  
  203. create or replace procedure testuj
  204. (
  205. IN ile int,
  206. IN min int,
  207. IN max int
  208. )
  209. begin
  210. IF EXISTS (select 1 from sysobjects where name = 'testlosowe' AND type = 'U')
  211. then
  212. drop table testlosowe;
  213. end if;
  214. call stworz_testlosowe();
  215. call init_testlosowe(0,10);
  216. call toss_testlosowe(30,0,10);
  217. //call pr_testlosowe(30);
  218. select * from testlosowe;
  219. //drop table testlosowe;
  220. end;
  221.  
  222. call testuj(30,0,50);
  223.  
  224. ----
  225.  
Advertisement
Add Comment
Please, Sign In to add comment