Guest User

Untitled

a guest
Jun 12th, 2018
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.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. /
  198. create or replace package funkcje is
  199. FUNCTION totalUsers RETURN number;
  200. FUNCTION LASTPOSTDATE2(UZYTKOWNIKID IN NUMBER) return date;
  201. FUNCTION totalCategories RETURN number;
  202. FUNCTION totalPOSTS2(UZYTKOWNIKID IN NUMBER) RETURN number;
  203. FUNCTION totalMessages(UZYTKOWNIKID IN NUMBER) RETURN number;
  204. FUNCTION pokazPosty(IDU NUMBER) RETURN SYS_REFCURSOR ;
  205. FUNCTION pokazUzytkownikow(IDU NUMBER) RETURN SYS_REFCURSOR;
  206. FUNCTION pokazTematy(IDU NUMBER) RETURN SYS_REFCURSOR ;
  207. FUNCTION LASTPOSTDATE(UZYTKOWNIKID IN NUMBER) return date;
  208. function ostatniaaktywnosc(Uzytkownikid in Number) return date ;
  209. FUNCTION LASTTOPICDATE(UZYTKOWNIKID IN NUMBER) return date ;
  210. FUNCTION totalTOPICS2(UZYTKOWNIKID IN NUMBER) RETURN number;
  211. FUNCTION totalPosts RETURN number;
  212. FUNCTION totalTopics RETURN number;
  213. Function wszystkie return number;
  214. end;
  215. /
  216. create or replace package procedury is
  217. procedure ADD_UZYTKOWNIK(uzytkownik_roleid NUMBER,Username2 Varchar, firstName VARCHAR, LastName VARCHAR,Haslo Varchar,Haslopowtorz Varchar, email VARCHAR, address VARCHAR,
  218. mobilePhone Number, age NUMBER);
  219. PROCEDURE ADD_POST(tematid NUMBER, uzytkownikid NUMBER, contenttt Varchar);
  220. PROCEDURE ADD_KATEGORIA(kategoria_name VARCHAR);
  221. PROCEDURE ADD_TEMAT( uzytkownikid NUMBER, kategoria_id NUMBER, tematName Varchar);
  222. PROCEDURE ADD_MESSAGE( message VARCHAR, uzytkownikid number);
  223. PROCEDURE ADD_ROLE( role_Name VARCHAR);
  224. PROCEDURE DEL_UZYTKOWNIK(idd NUMBER);
  225. PROCEDURE DEL_Post(idd NUMBER);
  226. PROCEDURE DEL_Temat(idd NUMBER);
  227. end;
  228. /
  229.  
  230. --------------PROCEDURY--------------
  231. create or replace package body procedury is
  232. PROCEDURE ADD_UZYTKOWNIK(uzytkownik_roleid NUMBER,Username2 Varchar, firstName VARCHAR, LastName VARCHAR,Haslo Varchar,Haslopowtorz Varchar, email VARCHAR, address VARCHAR,
  233. mobilePhone Number, age NUMBER)
  234. AS uzytkownik_id2 NUMBER;
  235. sprawdz number:=0;
  236. jestliczba BOOLEAN;
  237. jestlitera BOOLEAN;
  238. x BOOLEAN; --n
  239. y INTEGER; --m
  240. roznice INTEGER;
  241. jestznak BOOLEAN;
  242. liczby VARCHAR2(20);
  243. znaki VARCHAR2(50);
  244. litery VARCHAR2(70);
  245. BEGIN
  246. litery:= 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
  247. liczby:= '0123456789';
  248. znaki:='!@#$%^&*()-_=+`~`,.<>?/;:[]{}\|';
  249. SELECT COUNT(*) INTO sprawdz
  250. FROM Uzytkownik WHERE Username = USERNAME2;
  251. IF sprawdz > 0 THEN raise_application_error(-20026, 'Nazwa uzytkownika zajęta! podaj inna!');
  252. END IF;
  253.  
  254. IF Haslo != Haslopowtorz THEN raise_application_error(-20002, 'hasla sie od siebie roznia');
  255. END IF;
  256.  
  257. IF length(Haslo)< 6 THEN raise_application_error(-20003, 'Haslo musi posiadac minimum 6 znakow');
  258. END IF;
  259.  
  260. IF NLS_LOWER(Haslo) IN ('qwerty', '123456', 'account', 'user', 'password', 'oracle', 'user123', 'admin', 'login', 'password123' ) THEN
  261. raise_application_error(-20004, 'Haslo znajduje sie na black liscie!');
  262. END IF;
  263.  
  264. jestliczba:=FALSE;
  265. y := length(Haslo);
  266. FOR i IN 1..10 LOOP
  267. FOR j IN 1..y LOOP
  268. IF substr(Haslo,j,1) = substr(liczby,i,1) THEN
  269. jestliczba:=TRUE;
  270. GOTO znajdzlitere;
  271. END IF;
  272. END LOOP;
  273. END LOOP;
  274. IF jestliczba = FALSE THEN raise_application_error(-20005, 'haslo musi miec przynajmniej jedna liczbe');
  275. END IF;
  276. <<znajdzlitere>>
  277. jestlitera:=FALSE;
  278. FOR i IN 1..length(litery) LOOP
  279. FOR j IN 1..y LOOP
  280. IF substr(Haslo,j,1) = substr(litery,i,1) THEN
  281. jestlitera:=TRUE;
  282. GOTO znajdzznak;
  283. END IF;
  284. END LOOP;
  285. END LOOP;
  286. IF jestlitera = FALSE THEN raise_application_error(-20005, 'haslo musi miec przynajmniej jedna litere!');
  287. END IF;
  288. <<znajdzznak>>
  289. jestznak:=FALSE;
  290. FOR i IN 1..length(znaki) LOOP
  291. FOR j IN 1..y LOOP
  292. IF substr(Haslo,j,1) = substr(znaki,i,1) THEN
  293. jestznak:=TRUE;
  294. GOTO hasloOk;
  295. END IF;
  296. END LOOP;
  297. END LOOP;
  298. IF jestznak = FALSE THEN raise_application_error(-20005, 'haslo musi miec przynajmniej jeden znak!');
  299. END IF;
  300. <<hasloOk>>
  301.  
  302. INSERT INTO Uzytkownik(uzytkownik_id, uzytkownik_roleid,Username , firstName, LastName,Haslo, ranga, email, address, mobilePhone,age)
  303. VALUES (uzytkownik_id2,uzytkownik_roleid,Username2, firstName, LastName,Haslo, 'Nowy', email, address, mobilePhone,age);
  304. uzytkownik_id2 := uzytkownik_seq.CURRVAL;
  305. end ADD_UZYTKOWNIK;
  306.  
  307. PROCEDURE ADD_POST(tematid NUMBER, uzytkownikid NUMBER, contenttt Varchar) AS postid NUMBER; x VARCHAR(100); y VARCHAR(100);
  308. BEGIN
  309. declare TYPE tabli IS VARRAY(355) OF Varchar(555);
  310. tabb tabli:=tabli(NULL,NULL);
  311. begin
  312. tabb(1):='Zaawansowany';
  313. tabb(2):='Nowicjusz';
  314.  
  315. x:=Trunc((SYSDATE - LASTPOSTDATE(uzytkownikid))*100000);
  316. y:= 30-x;
  317.  
  318. if totaltopics2(uzytkownikid)<1 then
  319. raise_application_error(-20010, 'Przed dodaniem postu przywitaj sie w dziale Przedstaw sie');
  320. else
  321. if SYSDATE - LASTPOSTDATE(uzytkownikid) < 1/(24*120) THEN
  322. raise_application_error(-20010, 'musisz poczekac 30sekund przed kolejnym postem! Pozostalo ' || y || 'sekund');
  323. end if;
  324. IF totalPOSTS2(uzytkownikid)>5 THEN
  325. INSERT INTO post( post_id, temat_id,uzytkownik_id,contentt) VALUES (postid,tematid,uzytkownikid,contenttt);
  326. postid:=post_seq.currval;
  327. UPDATE Uzytkownik
  328. SET ranga = tabb(1)
  329. where uzytkownik_id=uzytkownikid and ranga!='ADMIN' and ranga!='MODERATOR';
  330. UPDATE Uzytkownik
  331. SET ostatnia = sysdate
  332. where uzytkownik_id=uzytkownikid;
  333. elsif totalPOSTS2(uzytkownikid)>3 THEN
  334. INSERT INTO post( post_id, temat_id,uzytkownik_id,contentt) VALUES (postid,tematid,uzytkownikid,contenttt);
  335. postid:=post_seq.currval;
  336. UPDATE Uzytkownik
  337. SET ranga = tabb(2)
  338. where uzytkownik_id=uzytkownikid and ranga!='ADMIN' and ranga!='MODERATOR';
  339. UPDATE Uzytkownik
  340. SET ostatnia = sysdate
  341. where uzytkownik_id=uzytkownikid;
  342. else
  343. INSERT INTO post( post_id, temat_id,uzytkownik_id,contentt) VALUES (postid,tematid,uzytkownikid,contenttt);
  344. postid:=post_seq.currval;
  345. UPDATE Uzytkownik
  346. SET ostatnia = sysdate
  347. where uzytkownik_id=uzytkownikid;
  348. end if;
  349. end if;
  350. end;
  351. END ADD_POST;
  352.  
  353.  
  354. PROCEDURE ADD_KATEGORIA(kategoria_name VARCHAR) AS katid NUMBER;
  355. BEGIN
  356. INSERT INTO kategoria( kategoria_id, kategoria_name)
  357. VALUES (katid,kategoria_name);
  358. katid:= kategoria_seq.currval;
  359. END ADD_KATEGORIA;
  360.  
  361.  
  362. PROCEDURE ADD_TEMAT( uzytkownikid NUMBER, kategoria_id NUMBER, tematName Varchar)
  363. AS
  364. tematid NUMBER;
  365.  
  366. rek_user Uzytkownik%ROWTYPE;
  367. BEGIN
  368.  
  369. declare type wlasny is record(
  370. zmienna1 Number,
  371. zmienna2 Number,
  372. zmienna3 Number,
  373. zaawans Varchar(50),
  374. x Varchar(100),
  375. y Varchar(100));
  376. obiekt1 wlasny;
  377. begin
  378. obiekt1.zmienna1:=3;
  379. obiekt1.zmienna2:=2;
  380. obiekt1.zmienna3:=1;
  381. obiekt1.zaawans:='Zaawansowany';
  382. obiekt1.x:= Trunc((SYSDATE - LASTTOPICDATE(uzytkownikid))*100000);
  383. obiekt1.y:= 30-obiekt1.x;
  384.  
  385.  
  386. SELECT RANGA, AGE INTO REK_USER.RANGA, REK_USER.AGE FROM UZYTKOWNIK WHERE UZYTKOWNIK_ID=UZYTKOWNIKID;
  387.  
  388. if SYSDATE - LASTTOPICDATE(uzytkownikid) < 1/(24*120) THEN
  389. raise_application_error(-20010, 'musisz poczekac 30sekund przed kolejnym dodaniem tematu! Pozostalo ' || obiekt1.y || 'sekund');
  390. end if;
  391.  
  392. IF kategoria_id =obiekt1.zmienna1 then
  393. INSERT INTO temat( temat_id,uzytkownik_id, kategoria_id, tematName )
  394. VALUES (tematid,uzytkownikid, kategoria_id, tematName);
  395. tematid:=temat_seq.currval;
  396. UPDATE Uzytkownik
  397. SET ostatnia = sysdate
  398. where uzytkownik_id=uzytkownikid;
  399. elsif totalPOSTS2(uzytkownikid)>0 then
  400. if kategoria_id =obiekt1.zmienna2 and REK_USER.ranga= obiekt1.zaawans and REK_USER.age>18 then
  401. INSERT INTO temat( temat_id,uzytkownik_id, kategoria_id, tematName )
  402. VALUES (tematid,uzytkownikid, kategoria_id, tematName);
  403. UPDATE Uzytkownik
  404. SET ostatnia = sysdate
  405. where uzytkownik_id=uzytkownikid;
  406. else raise_application_error(-20010, 'temat tylko dla zaawansowanych oraz 18+');
  407. end if;
  408. if kategoria_id = obiekt1.zmienna3 then
  409. INSERT INTO temat( temat_id,uzytkownik_id, kategoria_id, tematName )
  410. VALUES (tematid,uzytkownikid, kategoria_id, tematName);
  411. UPDATE Uzytkownik
  412. SET ostatnia = sysdate
  413. where uzytkownik_id=uzytkownikid;
  414. end if;
  415. else
  416. raise_application_error(-20010, 'musisz dodac przynajmniej 1 post oraz zalozyc temat w celu przywitania zanim napiszesz temat w innej kategorii!');
  417. end if;
  418. end;
  419. END ADD_TEMAT;
  420.  
  421.  
  422.  
  423. PROCEDURE ADD_MESSAGE( message VARCHAR, uzytkownikid number) AS messageid NUMBER;
  424. BEGIN
  425. INSERT INTO chat( chat_id, message, uzytkownik_id)
  426. VALUES (messageid,message, uzytkownikid);
  427. messageid:=chat_seq.currval;
  428. END ADD_MESSAGE;
  429.  
  430.  
  431. PROCEDURE ADD_ROLE( role_Name VARCHAR) AS roleid NUMBER;
  432. BEGIN
  433. INSERT INTO uzytkownik_Role( uzytkownik_roleid, role_Name)
  434. VALUES (roleid,role_Name);
  435. roleid:=rola_seqq.currval;
  436. END ADD_ROLE;
  437.  
  438.  
  439. PROCEDURE DEL_UZYTKOWNIK(idd NUMBER) AS
  440. BEGIN
  441. DELETE FROM UZYTKOWNIK WHERE uzytkownik_id = idd and ranga!='ADMIN';
  442. END DEL_UZYTKOWNIK;
  443.  
  444.  
  445. PROCEDURE DEL_Post(idd NUMBER) AS
  446. BEGIN
  447. DELETE FROM Post WHERE post_id = idd;
  448. END DEL_Post;
  449.  
  450.  
  451. PROCEDURE DEL_Temat(idd NUMBER) AS
  452. BEGIN
  453. DELETE FROM Temat WHERE temat_id = idd;
  454. END DEL_Temat;
  455.  
  456. END;
  457. /
  458. --- wyswietlanie za pomoca kursora
  459. create or replace package body funkcje is
  460.  
  461. FUNCTION pokazTematy(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 T.TEMAT_ID , T.TEMATNAME FROM TEMAT T,
  469. UZYTKOWNIK U
  470. WHERE U.UZYTKOWNIK_ID = T.UZYTKOWNIK_ID AND U.UZYTKOWNIK_ID=]' || IDU;
  471.  
  472. OPEN MY_CURSOR FOR MY_QUERY;
  473.  
  474. RETURN MY_CURSOR;
  475. END pokazTematy;
  476.  
  477.  
  478. FUNCTION pokazPosty(IDU NUMBER)
  479. RETURN SYS_REFCURSOR
  480. AS
  481. MY_CURSOR SYS_REFCURSOR;
  482. MY_QUERY VARCHAR2(500);
  483. BEGIN
  484.  
  485. MY_QUERY := q'[SELECT DISTINCT P.POST_ID , P.CONTENTT FROM POST P,
  486. UZYTKOWNIK U
  487. WHERE U.UZYTKOWNIK_ID = P.UZYTKOWNIK_ID AND U.UZYTKOWNIK_ID=]' || IDU;
  488.  
  489. OPEN MY_CURSOR FOR MY_QUERY;
  490.  
  491. RETURN MY_CURSOR;
  492. END pokazPosty;
  493.  
  494. FUNCTION pokazUzytkownikow(IDU NUMBER)
  495. RETURN SYS_REFCURSOR
  496. AS
  497. MY_CURSOR SYS_REFCURSOR;
  498. MY_QUERY VARCHAR2(500);
  499. BEGIN
  500.  
  501. MY_QUERY := q'[SELECT DISTINCT U.UZYTKOWNIK_ID ,U.Username, U.FIRSTNAME,U.LASTNAME, U.RANGA, U.EMAIL,U.AGE FROM
  502. UZYTKOWNIK U , UZYTKOWNIK_ROLE R
  503. WHERE U.UZYTKOWNIK_ROLEID = R.UZYTKOWNIK_ROLEID AND R.UZYTKOWNIK_ROLEID=]' || IDU;
  504.  
  505. OPEN MY_CURSOR FOR MY_QUERY;
  506.  
  507. RETURN MY_CURSOR;
  508. END pokazUzytkownikow;
  509.  
  510.  
  511.  
  512. FUNCTION totalUsers
  513. RETURN number IS
  514. total number(2) := 0;
  515. BEGIN
  516. SELECT count(*) into total
  517. FROM Uzytkownik where uzytkownik_roleid=1;
  518. RETURN total;
  519. END;
  520.  
  521.  
  522.  
  523. FUNCTION totalCategories
  524. RETURN number IS
  525. total number(2) := 0;
  526. BEGIN
  527. SELECT count(*) into total
  528. FROM kategoria;
  529. RETURN total;
  530. END;
  531.  
  532.  
  533.  
  534. FUNCTION totalMessages(UZYTKOWNIKID IN NUMBER)
  535. RETURN number IS
  536. total number(2) := 0;
  537. BEGIN
  538. SELECT DISTINCT count(*) into total
  539. FROM Chat c, Uzytkownik U
  540. WHERE U.UZYTKOWNIK_ID=c.UZYTKOWNIK_ID AND c.UZYTKOWNIK_ID=UZYTKOWNIKID;
  541. RETURN total;
  542. END;
  543.  
  544.  
  545. FUNCTION totalPOSTS2(UZYTKOWNIKID IN NUMBER)
  546. RETURN number IS
  547. total number(2) := 0;
  548. BEGIN
  549. SELECT DISTINCT count(*) into total
  550. FROM Post p, Uzytkownik U
  551. WHERE U.UZYTKOWNIK_ID=P.UZYTKOWNIK_ID AND P.UZYTKOWNIK_ID=UZYTKOWNIKID;
  552. RETURN total;
  553. END;
  554.  
  555. FUNCTION LASTPOSTDATE(UZYTKOWNIKID IN NUMBER)
  556. return date IS
  557. dataposta date;
  558. Begin
  559. Select MAX(data_dodania) into dataposta
  560. from Post p, Uzytkownik U where U.Uzytkownik_id=p.Uzytkownik_id and U.UZYTKOWNIK_ID=UZYTKOWNIKID;
  561. return dataposta;
  562. END;
  563.  
  564. function ostatniaaktywnosc(Uzytkownikid in Number)
  565. return date IS
  566. dataczegos date;
  567. dataczegos2 date;
  568. Begin
  569. Select MAX(data_dodania) into dataczegos
  570. from Post p, Uzytkownik U where U.Uzytkownik_id=p.Uzytkownik_id and U.UZYTKOWNIK_ID=Uzytkownikid;
  571. Select MAX(datadodania) into dataczegos2
  572. from Temat t, Uzytkownik U where U.Uzytkownik_id=t.Uzytkownik_id and U.UZYTKOWNIK_ID=Uzytkownikid;
  573. if dataczegos > dataczegos2 then return dataczegos;
  574. else return dataczegos2;
  575. END if;
  576. END;
  577.  
  578. FUNCTION LASTTOPICDATE(UZYTKOWNIKID IN NUMBER)
  579. return date IS
  580. datatematu date;
  581. Begin
  582. Select MAX(datadodania) into datatematu
  583. from Temat t, Uzytkownik U where U.Uzytkownik_id=t.Uzytkownik_id and U.UZYTKOWNIK_ID=UZYTKOWNIKID;
  584. return datatematu;
  585. END;
  586.  
  587. FUNCTION LASTPOSTDATE2(UZYTKOWNIKID IN NUMBER)
  588. return date IS
  589. dataposta date;
  590. Begin
  591. Select MAX(data_dodania) into dataposta
  592. from Post p, Uzytkownik U where U.Uzytkownik_id=p.Uzytkownik_id and U.UZYTKOWNIK_ID=UZYTKOWNIKID;
  593. return dataposta;
  594. END;
  595.  
  596. FUNCTION totalTOPICS2(UZYTKOWNIKID IN NUMBER)
  597. RETURN number IS
  598. total number(2) := 0;
  599. BEGIN
  600. SELECT DISTINCT count(*) into total
  601. FROM Temat t, Uzytkownik U
  602. WHERE U.UZYTKOWNIK_ID=T.UZYTKOWNIK_ID AND T.UZYTKOWNIK_ID=UZYTKOWNIKID;
  603. RETURN total;
  604. END;
  605.  
  606.  
  607. FUNCTION totalPosts
  608. RETURN number IS
  609. total number(2) := 0;
  610. BEGIN
  611. SELECT count(*) into total
  612. from Post;
  613. RETURN total;
  614. END;
  615.  
  616.  
  617. FUNCTION totalTopics
  618. RETURN number IS
  619. total number(2) := 0;
  620. BEGIN
  621. SELECT count(*) into total
  622. from Temat;
  623. RETURN total;
  624. END;
  625.  
  626.  
  627. Function wszystkie
  628. return number is
  629. total number(2):=0;
  630. total2 number(2):=0;
  631. total3 number(2):=0;
  632. Begin
  633. SELECT Max(count(*)) into total
  634. FROM Temat t, Uzytkownik U
  635. WHERE U.UZYTKOWNIK_ID=T.UZYTKOWNIK_ID group by U.Uzytkownik_id;
  636. SELECT Max(count(*)) into total2
  637. FROM Post p, Uzytkownik U
  638. WHERE U.UZYTKOWNIK_ID=p.UZYTKOWNIK_ID group by U.Uzytkownik_id;
  639. SELECT Max(count(*)) into total3
  640. FROM Chat c, Uzytkownik U
  641. WHERE U.UZYTKOWNIK_ID=c.UZYTKOWNIK_ID group by U.Uzytkownik_id;
  642. RETURN total+total2+total3;
  643. End;
  644.  
  645. END;
  646. /
  647.  
  648.  
  649. DECLARE
  650. type books is record
  651. (title varchar(50),
  652. author varchar(50),
  653. subject varchar(100),
  654. book_id number);
  655. book1 books;
  656. book2 books;
  657. BEGIN
  658.  
  659. book1.title := 'tytul1';
  660. book1.author := 'autor1 ';
  661. book1.subject := 'przedmiot';
  662. book1.book_id := 6495407;
  663.  
  664. book2.title := 'Tytul2';
  665. book2.author := 'Autor2';
  666. book2.subject := 'przedmiot2';
  667. book2.book_id := 6495700;
  668.  
  669. -- Print book 1 record
  670. dbms_output.put_line('Book 1 title : '|| book1.title);
  671. dbms_output.put_line('Book 1 author : '|| book1.author);
  672. dbms_output.put_line('Book 1 subject : '|| book1.subject);
  673. dbms_output.put_line('Book 1 book_id : ' || book1.book_id);
  674.  
  675. -- Print book 2 record
  676. dbms_output.put_line('Book 2 title : '|| book2.title);
  677. dbms_output.put_line('Book 2 author : '|| book2.author);
  678. dbms_output.put_line('Book 2 subject : '|| book2.subject);
  679. dbms_output.put_line('Book 2 book_id : '|| book2.book_id);
  680. END;
Add Comment
Please, Sign In to add comment