Advertisement
Smudla

IDAS2_SEM_TOFRONTEND

Jan 1st, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 10.07 KB | None | 0 0
  1. CREATE TABLE SEM_Kategorie
  2.   ( Typ NUMBER NOT NULL , Nazev VARCHAR2 (100)
  3.   ) ;
  4. ALTER TABLE SEM_Kategorie ADD CONSTRAINT SEM_Kategorie_PK PRIMARY KEY ( Typ ) ;
  5.  
  6. CREATE TABLE SEM_LogTable
  7.   ( ID NUMBER NOT NULL , User_ID NUMBER , Datum DATE
  8.   ) ;
  9. ALTER TABLE SEM_LogTable ADD CONSTRAINT SEM_LogTable_PK PRIMARY KEY ( ID ) ;
  10.  
  11. CREATE TABLE SEM_Meny
  12.   ( Kod VARCHAR2 (3) NOT NULL , Nazev VARCHAR2 (50)
  13.   ) ;
  14. ALTER TABLE SEM_Meny ADD CONSTRAINT SEM_Meny_PK PRIMARY KEY ( Kod ) ;
  15.  
  16. CREATE TABLE SEM_Objednavky
  17.   (
  18.     ID          NUMBER NOT NULL ,
  19.     Datum       DATE NOT NULL ,
  20.     Stav        VARCHAR2 (100) NOT NULL ,
  21.     Obsah       VARCHAR2 (500) NOT NULL ,
  22.     Produkty_ID NUMBER NOT NULL ,
  23.     Users_ID    NUMBER NOT NULL
  24.   ) ;
  25. ALTER TABLE SEM_Objednavky ADD CONSTRAINT SEM_Objednavky_PK PRIMARY KEY ( ID ) ;
  26.  
  27. CREATE TABLE SEM_Produkty
  28.   (
  29.     ID            NUMBER NOT NULL ,
  30.     Nazev         VARCHAR2 (100) ,
  31.     Cena          NUMBER ,
  32.     Kategorie_Typ NUMBER NOT NULL
  33.   ) ;
  34. ALTER TABLE SEM_Produkty ADD CONSTRAINT SEM_Produkty_PK PRIMARY KEY ( ID ) ;
  35.  
  36. CREATE TABLE "SEM_Produkty-foto"
  37.   (
  38.     ID NUMBER NOT NULL ,
  39.     Data BLOB ,
  40.     Pripona_souboru VARCHAR2 (4) ,
  41.     Datum_nahrani   DATE ,
  42.     Produkty_ID     NUMBER NOT NULL
  43.   ) ;
  44. ALTER TABLE "SEM_Produkty-foto" ADD CONSTRAINT "SEM_Produkty-foto_PK" PRIMARY KEY ( ID ) ;
  45.  
  46. CREATE TABLE "SEM_Produkty-parametry"
  47.   (
  48.     Popis       VARCHAR2 (300) ,
  49.     Upozorneni  VARCHAR2 (200) ,
  50.     Schnuti     VARCHAR2 (50) ,
  51.     Obsah       VARCHAR2 (50) ,
  52.     ID          NUMBER NOT NULL ,
  53.     Produkty_ID NUMBER NOT NULL
  54.   ) ;
  55. ALTER TABLE "SEM_Produkty-parametry" ADD CONSTRAINT "SEM_Produkty-parametry_PK" PRIMARY KEY ( ID ) ;
  56.  
  57. CREATE TABLE SEM_Role
  58.   ( ID NUMBER NOT NULL , Nazev VARCHAR2 (100)
  59.   ) ;
  60. ALTER TABLE SEM_Role ADD CONSTRAINT SEM_Role_PK PRIMARY KEY ( ID ) ;
  61.  
  62. CREATE TABLE SEM_Staty
  63.   (
  64.     ID       NUMBER NOT NULL ,
  65.     Nazev    VARCHAR2 (100) ,
  66.     Meny_Kod VARCHAR2 (3) NOT NULL
  67.   ) ;
  68. ALTER TABLE SEM_Staty ADD CONSTRAINT SEM_Staty_PK PRIMARY KEY ( ID ) ;
  69.  
  70. CREATE TABLE SEM_TEMPORARY
  71.   (
  72.     ID    NUMBER NOT NULL ,
  73.     Datum DATE ,
  74.     LOG   VARCHAR2 (500)
  75.   ) ;
  76. ALTER TABLE SEM_TEMPORARY ADD CONSTRAINT SEM_Temporary_PK PRIMARY KEY ( ID ) ;
  77.  
  78. CREATE TABLE SEM_Users
  79.   (
  80.     ID       NUMBER NOT NULL ,
  81.     Jmeno    VARCHAR2 (100) ,
  82.     Prijmeni VARCHAR2 (100) ,
  83.     Email    VARCHAR2 (100) ,
  84.     Heslo    VARCHAR2 (200) ,
  85.     Role_ID  NUMBER NOT NULL ,
  86.     Staty_ID NUMBER NOT NULL
  87.   ) ;
  88. ALTER TABLE SEM_Users ADD CONSTRAINT SEM_Users_PK PRIMARY KEY ( ID ) ;
  89.  
  90. CREATE TABLE SEM_UsersToLogTable
  91.   (
  92.     Users_ID    NUMBER NOT NULL ,
  93.     LogTable_ID NUMBER NOT NULL
  94.   ) ;
  95. ALTER TABLE SEM_UsersToLogTable ADD CONSTRAINT Relation_12__IDX PRIMARY KEY ( Users_ID, LogTable_ID ) ;
  96.  
  97. ALTER TABLE SEM_UsersToLogTable ADD CONSTRAINT FK_ASS_7 FOREIGN KEY ( Users_ID ) REFERENCES SEM_Users ( ID ) ;
  98.  
  99. ALTER TABLE SEM_UsersToLogTable ADD CONSTRAINT FK_ASS_8 FOREIGN KEY ( LogTable_ID ) REFERENCES SEM_LogTable ( ID ) ;
  100.  
  101. ALTER TABLE SEM_Objednavky ADD CONSTRAINT SEM_Objednavky_Produkty_FK FOREIGN KEY ( Produkty_ID ) REFERENCES SEM_Produkty ( ID ) ;
  102.  
  103. ALTER TABLE SEM_Objednavky ADD CONSTRAINT Objednavky_Users_FK FOREIGN KEY ( Users_ID ) REFERENCES SEM_Users ( ID ) ;
  104.  
  105. ALTER TABLE "SEM_Produkty-foto" ADD CONSTRAINT "SEM_Produkty-foto_Produkty_FK" FOREIGN KEY ( Produkty_ID ) REFERENCES SEM_Produkty ( ID ) ;
  106.  
  107. ALTER TABLE "SEM_Produkty-parametry" ADD CONSTRAINT "SEM_parametry_Produkty_FK" FOREIGN KEY ( Produkty_ID ) REFERENCES SEM_Produkty ( ID ) ;
  108.  
  109. ALTER TABLE SEM_Produkty ADD CONSTRAINT SEM_Produkty_Kategorie_FK FOREIGN KEY ( Kategorie_Typ ) REFERENCES SEM_Kategorie ( Typ ) ;
  110.  
  111. ALTER TABLE SEM_Staty ADD CONSTRAINT SEM_Staty_Meny_FK FOREIGN KEY ( Meny_Kod ) REFERENCES SEM_Meny ( Kod ) ;
  112.  
  113. ALTER TABLE SEM_Users ADD CONSTRAINT SEM_Users_Role_FK FOREIGN KEY ( Role_ID ) REFERENCES SEM_Role ( ID ) ;
  114.  
  115. ALTER TABLE SEM_Users ADD CONSTRAINT Users_Staty_FK FOREIGN KEY ( Staty_ID ) REFERENCES SEM_Staty ( ID ) ;
  116.  
  117. ALTER TABLE SEM_MENY add  KURZ NUMBER(7,2);
  118. /*TABULKY DONE*/
  119.  
  120.  
  121.  
  122. INSERT INTO SEM_ROLE (id,nazev) VALUES (1,'Testovaci Faggot');
  123. INSERT INTO SEM_MENY (kod,nazev) VALUES ('MRK','Říšská marka');
  124. INSERT INTO sem_staty (id,nazev,meny_kod) VALUES (1,'treti rise','MRK');
  125. INSERT INTO SEM_USERS (id,jmeno,prijmeni,email,heslo,role_id,staty_id) VALUES
  126. (1,'Hitler','TESTOVAC','natzi1@gestapo.de','SwastikaForWin',1,1);
  127. INSERT INTO SEM_KATEGORIE(typ,nazev) VALUES (1,'Hrebiky');
  128. INSERT INTO sem_produkty(id,nazev,cena,kategorie_typ) VALUES (1,'Hrebiky ve spreji',666,1);
  129. INSERT INTO SEM_OBJEDNAVKY(id,datum,stav,obsah,produkty_id,users_id) VALUES
  130. (sem_seq_obj.NEXTVAL, SYSDATE,'Nemame, 3x jsme se divaly','hrebiky ve spreji',1,1);
  131.  
  132. /*TESTOVACI DATA CO SEM POUZIL*/
  133.  
  134. CREATE OR REPLACE
  135. TRIGGER "SEM_USERS_VALIDACE"  
  136. BEFORE INSERT OR UPDATE ON SEM_USERS
  137. FOR EACH ROW
  138. BEGIN
  139. :NEW.jmeno := INITCAP(:NEW.JMENO);
  140. :NEW.prijmeni := INITCAP(:NEW.PRIJMENI);
  141. IF
  142. IS_VALID_EMAIL(:NEW.email)= 0
  143. THEN
  144. raise_application_error(-20001,'Email je uveden ve špatném tvaru which is forbidden by the law ');
  145. END IF;
  146. IF
  147. :NEW.heslo IS NULL
  148. THEN
  149. raise_application_error(-20001,'cyka blyat nemas tam heslo');
  150. END IF;
  151. END;
  152.  
  153. CREATE OR REPLACE TRIGGER "SEM_LOGIN_TRIGGER"  
  154. BEFORE INSERT ON SEM_LOGTABLE
  155. FOR EACH ROW
  156. BEGIN
  157. INSERT INTO SEM_temporary
  158. (id,datum,LOG)
  159. VALUES
  160.   (SEM_TEMP.NEXTVAL,SYSDATE,:NEW.user_id || ' provedl pokus o prihlaseni');
  161. END;
  162.  
  163. CREATE OR REPLACE
  164. TRIGGER "SEM_LOGIN_TRIGGER_suc"  
  165. AFTER INSERT ON SEM_LOGTABLE
  166. FOR EACH ROW
  167. BEGIN
  168. INSERT INTO SEM_temporary
  169. (id,datum,LOG)
  170. VALUES
  171.   (SEM_TEMP.NEXTVAL,SYSDATE,:NEW.user_id || ' se uspesne prihlasil');
  172. END;
  173.  
  174. /*TRIGGERY DONE*/
  175.  
  176. CREATE OR REPLACE VIEW SEM_PREHLED_STAV_ZADANA
  177. AS
  178. SELECT * FROM SEM_OBJEDNAVKY WHERE stav LIKE 'Zadana'
  179. ORDER BY id ASC;
  180.  
  181. CREATE OR REPLACE VIEW SEM_PREHLED_STAV_VYRIZENA
  182. AS
  183. SELECT * FROM SEM_OBJEDNAVKY WHERE stav LIKE 'vyrizena'
  184. ORDER BY id ASC;
  185.  
  186. CREATE OR REPLACE VIEW SEM_PRODUKTY_PREHLED
  187. AS
  188. SELECT * FROM "SEM_Produkty-foto" join sem_produkty using (ID)
  189. ORDER BY id ASC;
  190.  
  191. /*POHLEDY DONE*/
  192.  
  193. /*TUDLE FCI UŽ bys měl mít v DB TAK BACHA Ať ji neděláš znova, ale klidně ji přepiš*/
  194. CREATE OR REPLACE FUNCTION IS_VALID_EMAIL
  195. (
  196.   EMAIL IN VARCHAR2  
  197. ) RETURN NUMBER AS
  198.  
  199.   i_result NUMBER;
  200.  
  201. BEGIN
  202.  
  203.   SELECT
  204.     COUNT(*) INTO i_result
  205.   FROM
  206.     dual
  207.   WHERE
  208.     REGEXP_LIKE(EMAIL,'^[a-zA-Z0-9._-]+@+[a-zA-Z0-9.-]+\.+[a-zA-Z]{2,4}$');
  209.  
  210.   RETURN i_result;
  211.  
  212. END IS_VALID_EMAIL;
  213.  
  214. CREATE OR REPLACE FUNCTION sem_CENA_MENA
  215. (P_PROD_ID IN NUMBER,
  216. P_MENA_ID IN VARCHAR2)
  217. RETURN VARCHAR2 AS
  218. cena_v_kc NUMBER;
  219. v_kurz NUMBER;
  220. v_cena NUMBER;
  221. BEGIN
  222. SELECT cena INTO cena_v_kc FROM SEM_PRODUKTY WHERE id=p_prod_id;
  223. IF p_mena_id LIKE 'CZK'
  224. THEN
  225. RETURN cena_v_kc || ' CZK';
  226. END IF;
  227. IF p_mena_id LIKE 'MRK'
  228. THEN
  229. RETURN cena_v_kc || ' MRK';
  230. END IF;
  231. IF p_mena_id LIKE 'USD'
  232. THEN
  233. SELECT kurz INTO v_kurz FROM sem_meny WHERE kod LIKE 'USD';
  234. v_cena := cena_v_kc*v_kurz;
  235. RETURN v_cena || 'USD';
  236. END IF;
  237. END sem_cena_mena;
  238.  
  239. /* FCE DONE */
  240.  
  241. CREATE OR REPLACE PROCEDURE SEM_ZMENA_STAVU_OBEDNAVKY
  242. (
  243. P_OBJ_ID IN NUMBER,
  244. P_OBJ_STAV IN VARCHAR2
  245. ) AS
  246. any_rows_found NUMBER;
  247. BEGIN
  248. any_rows_found := 0;
  249. SELECT COUNT(*)
  250.   INTO   any_rows_found
  251.   FROM   sem_objednavky
  252.   WHERE  id = P_OBJ_ID;
  253. IF any_rows_found = 0
  254. THEN
  255. raise_application_error(-20001,'Critical Error or no data found. A team of highly trained monkeys has been dispatched to deal with this situation.');
  256. END IF;
  257. UPDATE SEM_OBJEDNAVKY SET stav= P_OBJ_STAV WHERE ID = P_OBJ_ID;
  258. DBMS_OUTPUT.PUT_LINE('Stav obednavky zmenen na: ' || p_obj_stav);
  259. END SEM_ZMENA_STAVU_OBEDNAVKY;
  260.  
  261. CREATE OR REPLACE PROCEDURE SEM_ZMENA_ROLE_USERA
  262. (
  263. P_USER_ID IN NUMBER,
  264. P_ROLE_ID IN NUMBER
  265. ) AS
  266. any_rows_found5 NUMBER;
  267. BEGIN
  268. any_rows_found5 := 0;
  269. SELECT COUNT(*)
  270.   INTO   any_rows_found5
  271.   FROM   SEM_ROLE
  272.   WHERE  id = P_ROLE_ID;
  273. IF any_rows_found5 = 0
  274. THEN
  275. raise_application_error(-20016,'Critical Error or no data found. A team of highly trained monkeys has been dispatched to deal with this situation.');
  276. END IF;
  277. UPDATE SEM_USERS SET ROLE_ID= P_ROLE_ID WHERE ID = P_USER_ID;
  278. DBMS_OUTPUT.PUT_LINE('Role zmenena na: ' || P_ROLE_ID);
  279. END SEM_ZMENA_ROLE_USERA;
  280.  
  281. CREATE OR REPLACE PROCEDURE SEM_ZMENA_UPOZORNENI_PRODUKT
  282. (
  283. P_ID_PRODUKTY IN NUMBER,
  284. P_UPOZORNENI IN VARCHAR2
  285. ) AS
  286. any_rows_found NUMBER;
  287. BEGIN
  288. any_rows_found := 0;
  289. SELECT COUNT(*)
  290.   INTO   any_rows_found
  291.   FROM   "SEM_PRODUKTY-foto"
  292.   WHERE  produkty_id = P_ID_PRODUKTY;
  293. IF any_rows_found5 = 0
  294. THEN
  295. raise_application_error(-20016,'Critical Error or no data found. A team of highly trained monkeys has been dispatched to deal with this situation.');
  296. END IF;
  297. UPDATE "SEM_PRODUKTY-parametry" SET UPOZORNENI= P_UPOZORNENI WHERE produkty_id = p_id_produkty;
  298. DBMS_OUTPUT.PUT_LINE('Upozorneni zmeneno na: ' || p_upozorneni);
  299. END SEM_ZMENA_UPOZORNENI_PRODUKT;
  300.  
  301. /*PROCEDURY DONE*/
  302.  
  303. CREATE SEQUENCE SEM_SEQ_OBJ
  304.   MINVALUE 1
  305.   MAXVALUE 999999999999999999999999999
  306.   START WITH 1
  307.   INCREMENT BY 1;
  308.  
  309. CREATE SEQUENCE SEM_USERS
  310.   MINVALUE 1
  311.   MAXVALUE 999999999999999999999999999
  312.   START WITH 1
  313.   INCREMENT BY 1;
  314.  
  315. CREATE SEQUENCE SEM_TEMP
  316.   MINVALUE 1
  317.   MAXVALUE 999999999999999999999999999
  318.   START WITH 1
  319.   INCREMENT BY 1;
  320.  
  321. CREATE SEQUENCE SEM_LOGIN
  322.   MINVALUE 1
  323.   MAXVALUE 999999999999999999999999999
  324.   START WITH 1
  325.   INCREMENT BY 1;
  326.  
  327. CREATE SEQUENCE SEM_PRODKUTY
  328.   MINVALUE 1
  329.   MAXVALUE 999999999999999999999999999
  330.   START WITH 1
  331.   INCREMENT BY 1;
  332.  
  333. CREATE SEQUENCE SEM_KATEGORIE
  334.   MINVALUE 1
  335.   MAXVALUE 999999999999999999999999999
  336.   START WITH 1
  337.   INCREMENT BY 1;
  338.  
  339. CREATE SEQUENCE SEM_PRODUKTY_PARAMETRY
  340.   MINVALUE 1
  341.   MAXVALUE 999999999999999999999999999
  342.   START WITH 1
  343.   INCREMENT BY 1;
  344.  
  345. CREATE SEQUENCE SEM_PRODUKTY_FOTO
  346.   MINVALUE 1
  347.   MAXVALUE 999999999999999999999999999
  348.   START WITH 1
  349.   INCREMENT BY 1;
  350.  
  351. CREATE SEQUENCE SEM_ROLE
  352.   MINVALUE 1
  353.   MAXVALUE 999999999999999999999999999
  354.   START WITH 1
  355.   INCREMENT BY 1;
  356.  
  357. CREATE SEQUENCE SEM_STATY
  358.   MINVALUE 1
  359.   MAXVALUE 999999999999999999999999999
  360.   START WITH 1
  361.   INCREMENT BY 1;
  362.  
  363. /*SEKVENCE DONE*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement