Advertisement
Guest User

Untitled

a guest
Jun 4th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.20 KB | None | 0 0
  1. drop table uzytkownik_Chat;
  2. drop table chat;
  3. drop table post;
  4. drop table temat;
  5. drop table uzytkownik;
  6. drop table uzytkownik_Role;
  7.  
  8.  
  9.  
  10. drop table kategoria;
  11.  
  12. CREATE TABLE uzytkownik_Role (
  13. uzytkownik_roleid NUMBER(5) NOT NULL,
  14. role_name VARCHAR(45),
  15. PRIMARY KEY(uzytkownik_roleid)
  16. );
  17. drop sequence rola_seqq;
  18. CREATE SEQUENCE rola_seqq START WITH 1;
  19.  
  20. CREATE OR REPLACE TRIGGER rola_before
  21. BEFORE INSERT ON uzytkownik_Role
  22. FOR EACH ROW
  23. BEGIN
  24. SELECT rola_seqq.NEXTVAL
  25. INTO :new.uzytkownik_roleid
  26. FROM dual;
  27. END;
  28. /
  29.  
  30. CREATE TABLE kategoria (
  31. kategoria_id NUMBER(5) NOT NULL,
  32. kategoria_name VARCHAR(45),
  33. PRIMARY KEY(kategoria_id)
  34. );
  35. drop sequence kategoria_seq;
  36. CREATE SEQUENCE kategoria_seq start with 1;
  37. CREATE OR REPLACE TRIGGER kategoria_before
  38. BEFORE INSERT ON kategoria
  39. FOR EACH ROW
  40. BEGIN
  41. SELECT kategoria_seq.NEXTVAL
  42. INTO :new.kategoria_id
  43. FROM dual;
  44. END;
  45. /
  46. CREATE TABLE uzytkownik (
  47. uzytkownik_id NUMBER(5) NOT NULL,
  48. uzytkownik_roleid NUMBER(5) NOT NULL,
  49. Username Varchar(45),
  50. firstName VARCHAR(45),
  51. LastName VARCHAR(45),
  52. Haslo Varchar(45),
  53. ranga VARCHAR(45),
  54. email VARCHAR(45),
  55. address VARCHAR(45),
  56. mobilePhone NUMBER(8),
  57. age NUMBER(3),
  58. ostatnia date,
  59. PRIMARY KEY (uzytkownik_id),
  60. FOREIGN KEY(uzytkownik_roleid) REFERENCES uzytkownik_Role(uzytkownik_roleid) ON DELETE CASCADE
  61. );
  62. drop sequence uzytkownik_seq;
  63. CREATE SEQUENCE uzytkownik_seq;
  64. CREATE OR REPLACE TRIGGER uzytkownik_before
  65. BEFORE INSERT ON uzytkownik
  66. FOR EACH ROW
  67. BEGIN
  68. :NEW.UZYTKOWNIK_ID :=uzytkownik_SEQ.NEXTVAL;
  69. END;
  70. /
  71. CREATE TABLE temat (
  72. temat_id NUMBER(5) NOT NULL,
  73. uzytkownik_id NUMBER(5) NOT NULL,
  74. kategoria_id NUMBER(5) NOT NULL,
  75. tematName Varchar(25),
  76. datadodania TIMESTAMP Not null,
  77. PRIMARY KEY (temat_id),
  78. FOREIGN KEY(uzytkownik_id) REFERENCES uzytkownik(uzytkownik_id) ON DELETE CASCADE,
  79. FOREIGN KEY(kategoria_id) REFERENCES kategoria(kategoria_id) ON DELETE CASCADE
  80. );
  81. drop sequence temat_seq;
  82. CREATE SEQUENCE temat_seq start with 1;
  83. CREATE OR REPLACE TRIGGER temat_before
  84. BEFORE INSERT ON temat
  85. FOR EACH ROW
  86. BEGIN
  87. SELECT temat_seq.NEXTVAL
  88. INTO :new.temat_id
  89. FROM dual;
  90. END;
  91. /
  92.  
  93. CREATE TABLE post (
  94. post_id NUMBER(5) NOT NULL,
  95. temat_id NUMBER(5) NOT NULL,
  96. uzytkownik_id NUMBER(5) NOT NULL,
  97. contentt VARCHAR(450),
  98. DATA_DODANIA TIMESTAMP Not null,
  99. PRIMARY KEY (post_id),
  100. FOREIGN KEY(uzytkownik_id) REFERENCES uzytkownik(uzytkownik_id) ON DELETE CASCADE,
  101. FOREIGN KEY(temat_id) REFERENCES temat(temat_id) ON DELETE CASCADE
  102. );
  103. drop sequence post_seq;
  104. CREATE SEQUENCE post_seq start with 1;
  105. CREATE OR REPLACE TRIGGER post_before
  106. BEFORE INSERT ON post
  107. FOR EACH ROW
  108. BEGIN
  109. SELECT post_seq.NEXTVAL
  110. INTO :new.post_id
  111. FROM dual;
  112. END;
  113. /
  114.  
  115. CREATE TABLE chat (
  116. chat_id NUMBER(5) NOT NULL,
  117. message VARCHAR(45),
  118. uzytkownik_id NUMBER(5) NOT NULL,
  119. PRIMARY KEY (chat_id)
  120. );
  121.  
  122. /
  123. drop sequence chat_seq;
  124. CREATE SEQUENCE chat_seq start with 1;
  125. CREATE OR REPLACE TRIGGER chat_before
  126. BEFORE INSERT ON chat
  127. FOR EACH ROW
  128. BEGIN
  129. SELECT chat_seq.NEXTVAL
  130. INTO :new.chat_id
  131. FROM dual;
  132. END;
  133. /
  134. CREATE TABLE uzytkownik_Chat (
  135. uzytkownik_id NUMBER(5) NOT NULL,
  136. chat_id NUMBER(5) NOT NULL,
  137. FOREIGN KEY(uzytkownik_id) REFERENCES uzytkownik(uzytkownik_id) ON DELETE CASCADE,
  138. FOREIGN KEY(chat_id) REFERENCES chat(chat_id)
  139. );
  140.  
  141. insert into uzytkownik_Role values('', 'User');
  142. insert into uzytkownik_Role values('', 'Admin');
  143. insert into uzytkownik_Role values('', 'Moderator');
  144.  
  145. insert into uzytkownik values('','1','Patryko', 'Patryk', 'Brzuchacz','Haselko1' , 'Nowy','otspatryk', 'Piwoda', '12345','20',TO_DATE('2018/05/16 09:20:15', 'YYYY/MM/DD HH:MI:SS'));
  146. insert into uzytkownik values('','1','Olafo', 'Ola', 'Żolyniak','Haselko2' ,'Nowy', 'olkk', 'Piwoda', '010101','20',TO_DATE('2018/05/17 09:20:15', 'YYYY/MM/DD HH:MI:SS'));
  147. insert into uzytkownik values('','2', 'Admino' ,'Admin', 'adm','Adminowehaslo1' , 'ADMIN','adminmalpa', 'rzeszow', '8080','2',TO_DATE('2018/05/18 09:20:15', 'YYYY/MM/DD HH:MI:SS'));
  148. insert into uzytkownik values('','3','Modero', 'Mod', 'modek','Modowehaslo1' ,'MODERATOR', 'modemalpa', 'krakow', '098431','3',TO_DATE('2018/05/19 09:20:15', 'YYYY/MM/DD HH:MI:SS'));
  149. insert into kategoria values('', 'Pytania');
  150. insert into kategoria values('', 'Poradniki');
  151. insert into kategoria values('', 'Przedstaw sie!');
  152.  
  153. insert into temat values('','1','1','Czy nadaje sie na?',TO_DATE('2018/05/16 04:20:15', 'YYYY/MM/DD HH:MI:SS'));
  154. insert into temat values('', '1' , '1', 'Java vs c#?',TO_DATE('2018/05/16 05:20:15', 'YYYY/MM/DD HH:MI:SS'));
  155. insert into temat values('','3','2', 'Poradnik do pl/sql',TO_DATE('2018/05/16 06:20:15', 'YYYY/MM/DD HH:MI:SS'));
  156. insert into temat values('','4','2', 'Poradnik do javy',TO_DATE('2018/05/16 07:20:15', 'YYYY/MM/DD HH:MI:SS'));
  157. insert into temat values('','1','3', 'Czesc jestem Patryk',TO_DATE('2018/05/16 08:20:15', 'YYYY/MM/DD HH:MI:SS'));
  158. insert into temat values('','2','3', 'Czesc jestem Ola',TO_DATE('2018/05/16 09:20:15', 'YYYY/MM/DD HH:MI:SS'));
  159.  
  160. insert into post values('','1','1', 'czy nadaje sie na programiste javy??',TO_DATE('2018/05/16 03:20:15', 'YYYY/MM/DD HH:MI:SS'));
  161. insert into post values('','1','2', 'jesli masz dosc checi to wszystko jest mozliwe',TO_DATE('2018/05/16 09:30:25', 'YYYY/MM/DD HH:MI:SS'));
  162. insert into post values('','1','1', 'ok to sprobuje!', TO_DATE('2018/05/17 10:22:25', 'YYYY/MM/DD HH:MI:SS'));
  163.  
  164. insert into post values('','2','1', 'co lepsze, java czy c#?', TO_DATE('2018/05/17 11:22:25', 'YYYY/MM/DD HH:MI:SS'));
  165. insert into post values('','2','3', 'java lepsza:)', TO_DATE('2018/05/17 12:22:25', 'YYYY/MM/DD HH:MI:SS'));
  166.  
  167. insert into post values('','3','3', 'przygotowalem dla was poradnik do pl/sql', TO_DATE('2018/05/17 11:12:25', 'YYYY/MM/DD HH:MI:SS'));
  168. insert into post values('','3','2', 'dzieki! nigdzie tego nie bylo!', TO_DATE('2018/05/19 10:42:25', 'YYYY/MM/DD HH:MI:SS'));
  169.  
  170. insert into post values('','4','4', 'przygotowalem poradnik do javy!', TO_DATE('2018/05/19 10:52:25', 'YYYY/MM/DD HH:MI:SS'));
  171. insert into post values('','4','1', 'dzieki ale tego jest mnostwo!', TO_DATE('2018/05/19 12:22:25', 'YYYY/MM/DD HH:MI:SS'));
  172.  
  173. insert into post values('','5','1', 'Jestem Patryk, milo poznac', TO_DATE('2018/05/20 10:18:25', 'YYYY/MM/DD HH:MI:SS'));
  174. insert into post values('','5','2', 'hej, mi Ciebie tez! ', TO_DATE('2018/05/20 10:32:25', 'YYYY/MM/DD HH:MI:SS'));
  175.  
  176. insert into post values('','6','2', 'Jestem Ola, milo poznac', TO_DATE('2018/05/20 12:42:25', 'YYYY/MM/DD HH:MI:SS'));
  177. insert into post values('','6','1', 'hej, mi Ciebie tez! ', TO_DATE('2018/05/22 11:22:25', 'YYYY/MM/DD HH:MI:SS'));
  178.  
  179. insert into chat values('','tu mozna sobie pogadac', '3');
  180.  
  181. insert into uzytkownik_chat values('3','1');
  182.  
  183. CREATE OR REPLACE TRIGGER post_bef
  184. BEFORE INSERT ON post
  185. FOR EACH ROW
  186. BEGIN
  187. :NEW.DATA_DODANIA := SYSDATE;
  188. END;
  189. /
  190. CREATE OR REPLACE TRIGGER temat_bef
  191. BEFORE INSERT ON temat
  192. FOR EACH ROW
  193. BEGIN
  194. :NEW.DATADODANIA :=SYSDATE;
  195. END;
  196. /
  197. create or replace package pakiet is
  198. FUNCTION totalUsers RETURN number;
  199. FUNCTION LASTPOSTDATE2(UZYTKOWNIKID IN NUMBER) return date;
  200. FUNCTION totalCategories RETURN number;
  201. FUNCTION totalPOSTS2(UZYTKOWNIKID IN NUMBER) RETURN number;
  202. FUNCTION totalMessages(UZYTKOWNIKID IN NUMBER) RETURN number;
  203. FUNCTION pokazPosty(IDU NUMBER) RETURN SYS_REFCURSOR ;
  204. FUNCTION pokazUzytkownikow(IDU NUMBER) RETURN SYS_REFCURSOR;
  205. FUNCTION pokazTematy(IDU NUMBER) RETURN SYS_REFCURSOR ;
  206. FUNCTION LASTPOSTDATE(UZYTKOWNIKID IN NUMBER) return date;
  207. function ostatniaaktywnosc(Uzytkownikid in Number) return date ;
  208. FUNCTION LASTTOPICDATE(UZYTKOWNIKID IN NUMBER) return date ;
  209. FUNCTION totalTOPICS2(UZYTKOWNIKID IN NUMBER) RETURN number;
  210. FUNCTION totalPosts RETURN number;
  211. FUNCTION totalTopics RETURN number;
  212. Function wszystkie return number;
  213. procedure ADD_UZYTKOWNIK(uzytkownik_roleid NUMBER,Username2 Varchar, firstName VARCHAR, LastName VARCHAR,Haslo Varchar,Haslopowtorz Varchar, email VARCHAR, address VARCHAR,
  214. mobilePhone Number, age NUMBER);
  215. PROCEDURE ADD_POST(tematid NUMBER, uzytkownikid NUMBER, contenttt Varchar);
  216. PROCEDURE ADD_KATEGORIA(kategoria_name VARCHAR);
  217. PROCEDURE ADD_TEMAT( uzytkownikid NUMBER, kategoria_id NUMBER, tematName Varchar);
  218. PROCEDURE ADD_MESSAGE( message VARCHAR, uzytkownikid number);
  219. PROCEDURE ADD_ROLE( role_Name VARCHAR);
  220. PROCEDURE DEL_UZYTKOWNIK(idd NUMBER);
  221. PROCEDURE DEL_Post(idd NUMBER);
  222. PROCEDURE DEL_Temat(idd NUMBER);
  223. end;
  224. /
  225. --------------PROCEDURY--------------
  226. create or replace package body pakiet is
  227. PROCEDURE ADD_UZYTKOWNIK(uzytkownik_roleid NUMBER,Username2 Varchar, firstName VARCHAR, LastName VARCHAR,Haslo Varchar,Haslopowtorz Varchar, email VARCHAR, address VARCHAR,
  228. mobilePhone Number, age NUMBER)
  229. AS uzytkownik_id2 NUMBER;
  230. sprawdz number:=0;
  231. jestliczba BOOLEAN;
  232. jestlitera BOOLEAN;
  233. x BOOLEAN; --n
  234. y INTEGER; --m
  235. roznice INTEGER;
  236. jestznak BOOLEAN;
  237. liczby VARCHAR2(20);
  238. znaki VARCHAR2(50);
  239.  
  240. litery VARCHAR2(70);
  241. BEGIN
  242. liczby:= '0123456789';
  243. litery:= 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
  244. znaki:='!@#$%^&*()-_=+`~`,.<>?/;:[]{}\|';
  245.  
  246. SELECT COUNT(*) INTO sprawdz
  247. FROM Uzytkownik
  248. WHERE Username = USERNAME2;
  249.  
  250. IF sprawdz > 0 THEN
  251. raise_application_error(-20026, 'Nazwa uzytkownika zajęta! podaj inna!');
  252. END IF;
  253.  
  254. IF Haslo != Haslopowtorz THEN
  255. raise_application_error(-20002, 'hasla sie od siebie roznia');
  256. END IF;
  257. IF length(Haslo) < 6 THEN
  258. raise_application_error(-20003, 'Haslo musi posiadac minimum 6 znakow');
  259. END IF;
  260. -- Sprawdz czy hasla nie ma na blackliscie
  261. IF NLS_LOWER(Haslo) IN ('qwerty', '123456', 'account', 'user', 'password',
  262. 'oracle', 'user123', 'admin', 'login', 'password123' ) THEN
  263. raise_application_error(-20004, 'Haslo znajduje sie na black liscie!');
  264. END IF;
  265.  
  266. jestliczba:=FALSE;
  267. y := length(Haslo);
  268. FOR i IN 1..10 LOOP
  269. FOR j IN 1..y LOOP
  270. IF substr(Haslo,j,1) = substr(liczby,i,1) THEN
  271. jestliczba:=TRUE;
  272. GOTO znajdzlitere;
  273. END IF;
  274. END LOOP;
  275. END LOOP;
  276. IF jestliczba = FALSE THEN
  277. raise_application_error(-20005, 'haslo musi miec przynajmniej jedna liczbe');
  278. END IF;
  279. <<znajdzlitere>>
  280. -- 2. Szukaj litery
  281. jestlitera:=FALSE;
  282. FOR i IN 1..length(litery) LOOP
  283. FOR j IN 1..y LOOP
  284. IF substr(Haslo,j,1) = substr(litery,i,1) THEN
  285. jestlitera:=TRUE;
  286. GOTO znajdzznak;
  287. END IF;
  288. END LOOP;
  289. END LOOP;
  290. IF jestlitera = FALSE THEN
  291. raise_application_error(-20005, 'haslo musi miec przynajmniej jedna litere!');
  292. END IF;
  293. <<znajdzznak>>
  294. jestznak:=FALSE;
  295. FOR i IN 1..length(znaki) LOOP
  296. FOR j IN 1..y LOOP
  297. IF substr(Haslo,j,1) = substr(znaki,i,1) THEN
  298. jestznak:=TRUE;
  299. GOTO hasloOk;
  300. END IF;
  301. END LOOP;
  302. END LOOP;
  303. IF jestznak = FALSE THEN
  304. raise_application_error(-20005, 'haslo musi miec przynajmniej jeden znak!');
  305. END IF;
  306. <<hasloOk>>
  307.  
  308.  
  309.  
  310. INSERT INTO Uzytkownik(uzytkownik_id, uzytkownik_roleid,Username , firstName, LastName,Haslo, ranga, email, address, mobilePhone,age)
  311. VALUES (uzytkownik_id2,uzytkownik_roleid,Username2, firstName, LastName,Haslo, 'Nowy', email, address, mobilePhone,age);
  312. uzytkownik_id2 := uzytkownik_seq.CURRVAL;
  313. end ADD_UZYTKOWNIK;
  314.  
  315. PROCEDURE ADD_POST(tematid NUMBER, uzytkownikid NUMBER, contenttt Varchar) AS postid NUMBER; x VARCHAR(100); y VARCHAR(100);
  316. BEGIN
  317. x:=Trunc((SYSDATE - LASTPOSTDATE(uzytkownikid))*100000);
  318. y:= 30-x;
  319. if totaltopics2(uzytkownikid)<1 then
  320. raise_application_error(-20010, 'Przed dodaniem postu przywitaj sie w dziale Przedstaw sie');
  321. else
  322. if SYSDATE - LASTPOSTDATE(uzytkownikid) < 1/(24*120) THEN
  323. raise_application_error(-20010, 'musisz poczekac 30sekund przed kolejnym postem! Pozostalo ' || y || 'sekund');
  324. end if;
  325. IF totalPOSTS2(uzytkownikid)>5 THEN
  326. INSERT INTO post( post_id, temat_id,uzytkownik_id,contentt) VALUES (postid,tematid,uzytkownikid,contenttt);
  327. postid:=post_seq.currval;
  328. UPDATE Uzytkownik
  329. SET ranga = 'ZAAWANSOWANY'
  330. where uzytkownik_id=uzytkownikid and ranga!='ADMIN' and ranga!='MODERATOR';
  331. UPDATE Uzytkownik
  332. SET ostatnia = sysdate
  333. where uzytkownik_id=uzytkownikid;
  334. elsif totalPOSTS2(uzytkownikid)>3 THEN
  335. INSERT INTO post( post_id, temat_id,uzytkownik_id,contentt) VALUES (postid,tematid,uzytkownikid,contenttt);
  336. postid:=post_seq.currval;
  337. UPDATE Uzytkownik
  338. SET ranga = 'Nowicjuszz'
  339. where uzytkownik_id=uzytkownikid and ranga!='ADMIN' and ranga!='MODERATOR';
  340. UPDATE Uzytkownik
  341. SET ostatnia = sysdate
  342. where uzytkownik_id=uzytkownikid;
  343. else
  344. INSERT INTO post( post_id, temat_id,uzytkownik_id,contentt) VALUES (postid,tematid,uzytkownikid,contenttt);
  345. postid:=post_seq.currval;
  346. UPDATE Uzytkownik
  347. SET ostatnia = sysdate
  348. where uzytkownik_id=uzytkownikid;
  349. end if;
  350. end if;
  351.  
  352. END ADD_POST;
  353.  
  354.  
  355. PROCEDURE ADD_KATEGORIA(kategoria_name VARCHAR) AS katid NUMBER;
  356. BEGIN
  357. INSERT INTO kategoria( kategoria_id, kategoria_name)
  358. VALUES (katid,kategoria_name);
  359. katid:= kategoria_seq.currval;
  360. END ADD_KATEGORIA;
  361.  
  362.  
  363. PROCEDURE ADD_TEMAT( uzytkownikid NUMBER, kategoria_id NUMBER, tematName Varchar)
  364. AS
  365. tematid NUMBER;
  366. x VARCHAR(100);
  367. y VARCHAR(100);
  368. rek_user Uzytkownik%ROWTYPE;
  369. BEGIN
  370. x:=Trunc((SYSDATE - LASTTOPICDATE(uzytkownikid))*100000);
  371. y:= 30-x;
  372.  
  373. SELECT RANGA, AGE INTO REK_USER.RANGA, REK_USER.AGE FROM UZYTKOWNIK WHERE UZYTKOWNIK_ID=UZYTKOWNIKID;
  374. if SYSDATE - LASTTOPICDATE(uzytkownikid) < 1/(24*120) THEN
  375. raise_application_error(-20010, 'musisz poczekac 30sekund przed kolejnym dodaniem tematu! Pozostalo ' || y || 'sekund');
  376. end if;
  377.  
  378. IF kategoria_id = 3 then
  379. INSERT INTO temat( temat_id,uzytkownik_id, kategoria_id, tematName )
  380. VALUES (tematid,uzytkownikid, kategoria_id, tematName);
  381. tematid:=temat_seq.currval;
  382. UPDATE Uzytkownik
  383. SET ostatnia = sysdate
  384. where uzytkownik_id=uzytkownikid;
  385. elsif totalPOSTS2(uzytkownikid)>0 then
  386. if kategoria_id = 2 and REK_USER.ranga='ZAAWANSOWANY' and REK_USER.age>18 then
  387. INSERT INTO temat( temat_id,uzytkownik_id, kategoria_id, tematName )
  388. VALUES (tematid,uzytkownikid, kategoria_id, tematName);
  389. UPDATE Uzytkownik
  390. SET ostatnia = sysdate
  391. where uzytkownik_id=uzytkownikid;
  392. else raise_application_error(-20010, 'temat tylko dla zaawansowanych oraz 18+');
  393. end if;
  394. if kategoria_id = 1 then
  395. INSERT INTO temat( temat_id,uzytkownik_id, kategoria_id, tematName )
  396. VALUES (tematid,uzytkownikid, kategoria_id, tematName);
  397. UPDATE Uzytkownik
  398. SET ostatnia = sysdate
  399. where uzytkownik_id=uzytkownikid;
  400. end if;
  401. else
  402. raise_application_error(-20010, 'musisz dodac przynajmniej 1 post oraz zalozyc temat w celu przywitania zanim napiszesz temat w innej kategorii!');
  403. end if;
  404. END ADD_TEMAT;
  405.  
  406.  
  407.  
  408. PROCEDURE ADD_MESSAGE( message VARCHAR, uzytkownikid number) AS messageid NUMBER;
  409. BEGIN
  410. INSERT INTO chat( chat_id, message, uzytkownik_id)
  411. VALUES (messageid,message, uzytkownikid);
  412. messageid:=chat_seq.currval;
  413. END ADD_MESSAGE;
  414.  
  415.  
  416. PROCEDURE ADD_ROLE( role_Name VARCHAR) AS roleid NUMBER;
  417. BEGIN
  418. INSERT INTO uzytkownik_Role( uzytkownik_roleid, role_Name)
  419. VALUES (roleid,role_Name);
  420. roleid:=rola_seqq.currval;
  421. END ADD_ROLE;
  422.  
  423.  
  424. PROCEDURE DEL_UZYTKOWNIK(idd NUMBER) AS
  425. BEGIN
  426. DELETE FROM UZYTKOWNIK WHERE uzytkownik_id = idd and ranga!='ADMIN';
  427. END DEL_UZYTKOWNIK;
  428.  
  429.  
  430. PROCEDURE DEL_Post(idd NUMBER) AS
  431. BEGIN
  432. DELETE FROM Post WHERE post_id = idd;
  433. END DEL_Post;
  434.  
  435.  
  436. PROCEDURE DEL_Temat(idd NUMBER) AS
  437. BEGIN
  438. DELETE FROM Temat WHERE temat_id = idd;
  439. END DEL_Temat;
  440.  
  441.  
  442. --- wyswietlanie za pomoca kursora
  443.  
  444. FUNCTION pokazTematy(IDU NUMBER)
  445. RETURN SYS_REFCURSOR
  446. AS
  447. MY_CURSOR SYS_REFCURSOR;
  448. MY_QUERY VARCHAR2(500);
  449. BEGIN
  450.  
  451. MY_QUERY := q'[SELECT DISTINCT T.TEMAT_ID , T.TEMATNAME FROM TEMAT T,
  452. UZYTKOWNIK U
  453. WHERE U.UZYTKOWNIK_ID = T.UZYTKOWNIK_ID AND U.UZYTKOWNIK_ID=]' || IDU;
  454.  
  455. OPEN MY_CURSOR FOR MY_QUERY;
  456.  
  457. RETURN MY_CURSOR;
  458. END pokazTematy;
  459.  
  460.  
  461. FUNCTION pokazPosty(IDU NUMBER)
  462. RETURN SYS_REFCURSOR
  463. AS
  464. MY_CURSOR SYS_REFCURSOR;
  465. MY_QUERY VARCHAR2(500);
  466. BEGIN
  467.  
  468. MY_QUERY := q'[SELECT DISTINCT P.POST_ID , P.CONTENTT FROM POST P,
  469. UZYTKOWNIK U
  470. WHERE U.UZYTKOWNIK_ID = P.UZYTKOWNIK_ID AND U.UZYTKOWNIK_ID=]' || IDU;
  471.  
  472. OPEN MY_CURSOR FOR MY_QUERY;
  473.  
  474. RETURN MY_CURSOR;
  475. END pokazPosty;
  476.  
  477. FUNCTION pokazUzytkownikow(IDU NUMBER)
  478. RETURN SYS_REFCURSOR
  479. AS
  480. MY_CURSOR SYS_REFCURSOR;
  481. MY_QUERY VARCHAR2(500);
  482. BEGIN
  483.  
  484. MY_QUERY := q'[SELECT DISTINCT U.UZYTKOWNIK_ID ,U.Username, U.FIRSTNAME,U.LASTNAME, U.RANGA, U.EMAIL,U.AGE FROM
  485. UZYTKOWNIK U , UZYTKOWNIK_ROLE R
  486. WHERE U.UZYTKOWNIK_ROLEID = R.UZYTKOWNIK_ROLEID AND R.UZYTKOWNIK_ROLEID=]' || IDU;
  487.  
  488. OPEN MY_CURSOR FOR MY_QUERY;
  489.  
  490. RETURN MY_CURSOR;
  491. END pokazUzytkownikow;
  492.  
  493.  
  494. -- FUNKCJE
  495.  
  496. FUNCTION totalUsers
  497. RETURN number IS
  498. total number(2) := 0;
  499. BEGIN
  500. SELECT count(*) into total
  501. FROM Uzytkownik where uzytkownik_roleid=1;
  502. RETURN total;
  503. END;
  504.  
  505.  
  506.  
  507. FUNCTION totalCategories
  508. RETURN number IS
  509. total number(2) := 0;
  510. BEGIN
  511. SELECT count(*) into total
  512. FROM kategoria;
  513. RETURN total;
  514. END;
  515.  
  516.  
  517.  
  518. FUNCTION totalMessages(UZYTKOWNIKID IN NUMBER)
  519. RETURN number IS
  520. total number(2) := 0;
  521. BEGIN
  522. SELECT DISTINCT count(*) into total
  523. FROM Chat c, Uzytkownik U
  524. WHERE U.UZYTKOWNIK_ID=c.UZYTKOWNIK_ID AND c.UZYTKOWNIK_ID=UZYTKOWNIKID;
  525. RETURN total;
  526. END;
  527.  
  528.  
  529. FUNCTION totalPOSTS2(UZYTKOWNIKID IN NUMBER)
  530. RETURN number IS
  531. total number(2) := 0;
  532. BEGIN
  533. SELECT DISTINCT count(*) into total
  534. FROM Post p, Uzytkownik U
  535. WHERE U.UZYTKOWNIK_ID=P.UZYTKOWNIK_ID AND P.UZYTKOWNIK_ID=UZYTKOWNIKID;
  536. RETURN total;
  537. END;
  538.  
  539. FUNCTION LASTPOSTDATE(UZYTKOWNIKID IN NUMBER)
  540. return date IS
  541. dataposta date;
  542. Begin
  543. Select MAX(data_dodania) into dataposta
  544. from Post p, Uzytkownik U where U.Uzytkownik_id=p.Uzytkownik_id and U.UZYTKOWNIK_ID=UZYTKOWNIKID;
  545. return dataposta;
  546. END;
  547.  
  548. function ostatniaaktywnosc(Uzytkownikid in Number)
  549. return date IS
  550. dataczegos date;
  551. dataczegos2 date;
  552. Begin
  553. Select MAX(data_dodania) into dataczegos
  554. from Post p, Uzytkownik U where U.Uzytkownik_id=p.Uzytkownik_id and U.UZYTKOWNIK_ID=Uzytkownikid;
  555. Select MAX(datadodania) into dataczegos2
  556. from Temat t, Uzytkownik U where U.Uzytkownik_id=t.Uzytkownik_id and U.UZYTKOWNIK_ID=Uzytkownikid;
  557. if dataczegos > dataczegos2 then return dataczegos;
  558. else return dataczegos2;
  559. END if;
  560. END;
  561.  
  562. FUNCTION LASTTOPICDATE(UZYTKOWNIKID IN NUMBER)
  563. return date IS
  564. datatematu date;
  565. Begin
  566. Select MAX(datadodania) into datatematu
  567. from Temat t, Uzytkownik U where U.Uzytkownik_id=t.Uzytkownik_id and U.UZYTKOWNIK_ID=UZYTKOWNIKID;
  568. return datatematu;
  569. END;
  570.  
  571. FUNCTION LASTPOSTDATE2(UZYTKOWNIKID IN NUMBER)
  572. return date IS
  573. dataposta date;
  574. Begin
  575. Select MAX(data_dodania) into dataposta
  576. from Post p, Uzytkownik U where U.Uzytkownik_id=p.Uzytkownik_id and U.UZYTKOWNIK_ID=UZYTKOWNIKID;
  577. return dataposta;
  578. END;
  579.  
  580. FUNCTION totalTOPICS2(UZYTKOWNIKID IN NUMBER)
  581. RETURN number IS
  582. total number(2) := 0;
  583. BEGIN
  584. SELECT DISTINCT count(*) into total
  585. FROM Temat t, Uzytkownik U
  586. WHERE U.UZYTKOWNIK_ID=T.UZYTKOWNIK_ID AND T.UZYTKOWNIK_ID=UZYTKOWNIKID;
  587. RETURN total;
  588. END;
  589.  
  590.  
  591. FUNCTION totalPosts
  592. RETURN number IS
  593. total number(2) := 0;
  594. BEGIN
  595. SELECT count(*) into total
  596. from Post;
  597. RETURN total;
  598. END;
  599.  
  600.  
  601. FUNCTION totalTopics
  602. RETURN number IS
  603. total number(2) := 0;
  604. BEGIN
  605. SELECT count(*) into total
  606. from Temat;
  607. RETURN total;
  608. END;
  609.  
  610.  
  611. Function wszystkie
  612. return number is
  613. total number(2):=0;
  614. total2 number(2):=0;
  615. total3 number(2):=0;
  616. Begin
  617. SELECT Max(count(*)) into total
  618. FROM Temat t, Uzytkownik U
  619. WHERE U.UZYTKOWNIK_ID=T.UZYTKOWNIK_ID group by U.Uzytkownik_id;
  620. SELECT Max(count(*)) into total2
  621. FROM Post p, Uzytkownik U
  622. WHERE U.UZYTKOWNIK_ID=p.UZYTKOWNIK_ID group by U.Uzytkownik_id;
  623. SELECT Max(count(*)) into total3
  624. FROM Chat c, Uzytkownik U
  625. WHERE U.UZYTKOWNIK_ID=c.UZYTKOWNIK_ID group by U.Uzytkownik_id;
  626. RETURN total+total2+total3;
  627. End;
  628.  
  629.  
  630.  
  631.  
  632.  
  633. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement