· 9 years ago · Feb 01, 2017, 08:04 PM
1drop procedure klient_rejestracja
2drop procedure klient_usuwanie
3drop procedure klient_przywracanie
4drop procedure klient_zmienImie
5drop procedure klient_zmienNazwisko
6drop procedure klient_zmienAdres
7drop procedure klient_zmienTelefon
8drop procedure klient_zmienMail
9drop procedure klient_awansuj
10drop procedure klient_degraduj
11drop procedure administrator_dodawanie
12drop procedure moderator_dodawanie
13drop function klient_lista
14drop function specjalni_lista
15drop procedure towar_dodawanieNowego
16drop procedure towar_wycofanie
17drop procedure towar_przywracanie
18drop procedure towar_dostawa
19drop procedure towar_zmienIlosc
20drop procedure towar_zmienCene
21drop procedure towar_zmienNazwe
22drop function towar_producent
23drop function towar_nazwa
24drop function towar_mniejNiz
25drop function towar_wiecejNiz
26drop function towar_tanszyNiz
27drop function towar_drozszyNiz
28drop function towar_tanszyNizNetto
29drop function towar_drozszyNizNetto
30drop function towar_czyDostepny
31drop procedure towar_filtrowanie
32drop procedure zamowienie_utworzNowe
33drop procedure zamowienie_dodajTowar
34drop procedure zamowienie_usunTowar
35GO
36drop table Zwrot
37drop table Wymiana
38drop table Reklamacja
39drop table Zamowienie_Towar
40drop table Towar
41drop table Zamowienie
42drop table Status
43drop table Klient
44drop table Uzytkownik
45drop table Rola
46GO
47
48create table Rola (
49 id smallint identity (1,1) primary key,
50 nazwa varchar(50) not null
51)
52create table Uzytkownik(
53 id int identity (1,1) primary key,
54 login varchar (50) unique not null,
55 haslo varchar (50) not null,
56 czyAktywny bit default 'true',
57 rola smallint references Rola(id)
58)
59create table Klient(
60 id int identity (1,1) primary key,
61 imie varchar (50) not null,
62 nazwisko varchar (50) not null,
63 adres text not null,
64 telefon varchar (11) not null,
65 email varchar (100),
66 idUzytkownika int references Uzytkownik(id)
67)
68create table Status (
69 id smallint identity (1,1) primary key,
70 nazwa varchar(50) not null
71)
72create table Zamowienie(
73 id int identity (1,1) primary key,
74 idKlienta int references Klient(id),
75 dataZamowiena date not null,
76 dataRealizacji date,
77 wartosc int not null default 0,
78 status smallint references Status(id)
79)
80create table Towar (
81 id int identity (1,1) primary key,
82 producent varchar (100) not null,
83 nazwa varchar (100) not null unique,
84 ilosc int not null,
85 cenaNetto money not null,
86 podatek smallint not null default '23',
87 cenaBrutto as round( (cenaNetto + cenaNetto * podatek * 0.01), 2),
88 czyDostepny bit default 'true'
89)
90create table Zamowienie_Towar(
91 idZamowienia int references Zamowienie(id),
92 idTowaru int references Towar(id),
93 ilosc int not null,
94 cena money not null default '0',
95 --imei varchar (15) not null,
96 primary key (idZamowienia, idTowaru)
97)
98create table Reklamacja(
99 id_rekamacja int identity (1,1) primary key,
100 idZamowienia int references Zamowienie(id),
101 idTowaru int references Towar(id),
102 opis text not null,
103 status smallint references Status(id)
104)
105create table Wymiana(
106 id_wymiana int identity (1,1) primary key,
107 idZamowienia int references Zamowienie(id),
108 idTowaru int references Towar(id),
109 opis text not null,
110 status smallint references Status(id)
111)
112create table Zwrot(
113 id_zwrot int identity (1,1) primary key,
114 idZamowienia int references Zamowienie(id),
115 idTowaru int references Towar(id),
116 opis text not null,
117 status smallint references Status(id)
118)
119GO
120
121--CONSTRAINTS
122
123alter table Towar
124add constraint towar_ilosc_check check (ilosc >= 0)
125GO
126alter table Towar
127add constraint towar_cenaNetto_check check (cenaNetto >= 0)
128GO
129alter table Towar
130add constraint towar_podatek_check check (podatek >= 0)
131GO
132alter table Zamowienie_Towar
133add constraint zamowienie_ilosc_check check (ilosc >= 0)
134GO
135alter table Zamowienie_Towar
136add constraint zamowienie_cena_check check (cena >= 0)
137GO
138
139-- INSERT
140
141insert into Rola (nazwa)
142values
143 ('administrator'),
144 ('klient'),
145 ('stalyKlient'),
146 ('moderator')
147GO
148insert into Uzytkownik(login, haslo, rola)
149values
150 ('JanNowak', 'poziomki', '4'),
151 ('EwaKowalska', 'kobylamamalybok', '1'),
152 ('AdamBajsztok', 'qwerty', '2'),
153 ('DanutaKos', 'ptak', '2'),
154 ('KatarzynaMaczek', 'general', '4')
155GO
156insert into Klient (imie, nazwisko, adres, telefon, email, idUzytkownika)
157values
158 ('Adam', 'Bajsztok', 'Poznań, os. Różany Potok 17', '841548143', 'AdamBajsztok@gmail.com', '3'),
159 ('Danuta', 'Kos', 'Wrocław, ul. Grunwaldzka 14/5', '741852963', 'DanKos@wp.pl', '4')
160GO
161insert into Status (nazwa)
162values
163 ('w trakcie'),
164 ('zakończono'),
165 ('przerwano')
166GO
167insert into Towar (producent, nazwa, ilosc, cenaNetto)
168values
169 ('Samsung', 'Galaxy A3 gray', 50, 600),
170 ('Smasung', 'Galaxy S7 white', 50, 2100),
171 ('Sony', 'Xperia Z5 black', 37, 1200),
172 ('LG', 'G5', 24, 1100 ),
173 ('Xiaomi', 'Redmin 3s 32GB gray', 15, 900),
174 ('Huawei', 'P9 Lite black', 20, 1100),
175 ('Samsung', 'Galaxy J5 2016 gold', 15, 900),
176 ('ASUS', 'ZenFone 3 ZE520KL', 30, 1600),
177 ('LG', 'X Power K220 dark blue', 7, 800 ),
178 ('Lenovo', 'Moto X Style white', 15, 1300),
179 ('Apple', 'iPhone 7 32GB black', 5, 3350),
180 ('HTC', 'Desire 620 LTE white', 10, 500)
181GO
182
183-- TRIGGER
184
185CREATE TRIGGER trigger_usuwanieUzytkownika ON uzytkownik
186INSTEAD OF DELETE
187AS
188BEGIN
189 DECLARE @id int
190 SELECT @id = deleted.id FROM deleted
191 UPDATE uzytkownik SET czyAktywny = 'false' WHERE id=@id
192END
193GO
194
195CREATE TRIGGER trigger_usuwanieKlienta ON klient
196INSTEAD OF DELETE
197AS
198BEGIN
199 DECLARE @id int
200 SELECT @id = deleted.idUzytkownika FROM deleted
201 UPDATE uzytkownik SET czyAktywny = 'false' WHERE id=@id
202END
203GO
204
205-- PRCEDUER
206
207CREATE PROCEDURE klient_rejestracja
208 @login varchar(45),
209 @haslo varchar(45),
210 @imie varchar(50),
211 @nazwisko varchar(50),
212 @adres varchar(300),
213 @telefon varchar(11),
214 @email varchar(100)
215AS
216 DECLARE @id int
217
218 IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
219 RAISERROR('Taki login jest już zajęty!', 11, 1)
220 ELSE IF EXISTS (SELECT * FROM klient WHERE email = @email)
221 RAISERROR('Taki mail jest już w bazie!', 11, 2)
222 ELSE
223 BEGIN
224 INSERT INTO uzytkownik
225 VALUES(@login, @haslo, 'true', 2)
226
227 SELECT @id = Uzytkownik.id FROM Uzytkownik
228
229 INSERT INTO klient
230 VALUES(@imie, @nazwisko, @adres, @telefon, @email, @id)
231 END
232GO
233
234CREATE PROCEDURE klient_usuwanie
235 @id int = NULL, --id z tabeli klient
236 @login varchar(50) = NULL
237AS
238 IF @id IS NOT NULL
239 IF @login IS NOT NULL BEGIN
240 RAISERROR('Podaj jeden parametr!', 11, 3)
241 RETURN
242 END
243
244 IF @id IS NOT NULL BEGIN
245 IF NOT EXISTS (SELECT * FROM Klient WHERE id = @id)
246 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
247 ELSE BEGIN
248 DECLARE @idU int
249 SELECT @idU = idUzytkownika FROM Klient WHERE id = @id
250 IF EXISTS (SELECT * FROM uzytkownik WHERE id = @idU AND czyAktywny = 'false')
251 RAISERROR('Ten uzytkownik jest już nieaktywny!', 11, 1)
252 ELSE BEGIN
253 UPDATE uzytkownik
254 SET czyAktywny = 'false'
255 WHERE id = @idU
256 END
257 END
258 END
259
260 IF @login IS NOT NULL BEGIN
261 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
262 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
263 ELSE IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login AND czyAktywny = 'false')
264 RAISERROR('Ten uzytkownik jest już nieaktywny!', 11, 1)
265 ELSE BEGIN
266 UPDATE uzytkownik
267 SET czyAktywny = 'false'
268 WHERE login = @login
269 END
270 END
271
272 IF @id IS NULL
273 IF @login IS NULL
274 RAISERROR('Podaj jeden parametr!', 11, 3)
275GO
276
277CREATE PROCEDURE klient_przywracanie
278 @id int = NULL,
279 @login varchar(50) = NULL
280AS
281 IF @id IS NOT NULL
282 IF @login IS NOT NULL BEGIN
283 RAISERROR('Podaj jeden parametr!', 11, 3)
284 RETURN
285 END
286
287 IF @id IS NOT NULL BEGIN
288 IF NOT EXISTS (SELECT * FROM Klient WHERE id = @id)
289 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
290 ELSE BEGIN
291 DECLARE @idU int
292 SELECT @idU = idUzytkownika FROM Klient WHERE id = @id
293 IF EXISTS (SELECT * FROM uzytkownik WHERE id = @idU AND czyAktywny = 'true')
294 RAISERROR('Ten uzytkownik jest już aktywny!', 11, 1)
295 ELSE BEGIN
296 UPDATE uzytkownik
297 SET czyAktywny = 'true'
298 WHERE id = @idU
299 END
300 END
301 END
302
303 IF @login IS NOT NULL BEGIN
304 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
305 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
306 ELSE IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login AND czyAktywny = 'true')
307 RAISERROR('Ten uzytkownik jest już aktywny!', 11, 1)
308 ELSE BEGIN
309 UPDATE uzytkownik
310 SET czyAktywny = 'true'
311 WHERE login = @login
312 END
313 END
314
315 IF @id IS NULL
316 IF @login IS NULL
317 RAISERROR('Podaj jeden parametr!', 11, 3)
318GO
319
320CREATE PROCEDURE klient_zmienImie
321 @id int = NULL,
322 @login varchar(50) = NULL,
323 @imie varchar(50)
324AS
325 IF @id IS NOT NULL
326 IF @login IS NOT NULL BEGIN
327 RAISERROR('Podaj jeden parametr!', 11, 3)
328 RETURN
329 END
330
331 IF @id IS NOT NULL BEGIN
332 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
333 RAISERROR('Taki klient nie istnieje!', 11, 3)
334 ELSE BEGIN
335 UPDATE klient
336 SET imie = @imie
337 WHERE id = @id
338 END
339 END
340
341 IF @login IS NOT NULL BEGIN
342 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
343 RAISERROR('Taki klient nie istnieje!', 11, 3)
344 ELSE BEGIN
345 DECLARE @idU int
346 DECLARE @idK int
347 SELECT @idU = id FROM Uzytkownik WHERE login = @login
348 SELECT @idK = id FROM Klient WHERE idUzytkownika = @idU
349
350 UPDATE klient
351 SET imie = @imie
352 WHERE id = @idK
353 END
354 END
355
356 IF @id IS NULL
357 IF @login IS NULL
358 RAISERROR('Podaj jeden parametr!', 11, 3)
359GO
360
361CREATE PROCEDURE klient_zmienNazwisko
362 @id int = NULL,
363 @login varchar(50) = NULL,
364 @nazwisko varchar(50)
365AS
366 IF @id IS NOT NULL
367 IF @login IS NOT NULL BEGIN
368 RAISERROR('Podaj jeden parametr!', 11, 3)
369 RETURN
370 END
371
372 IF @id IS NOT NULL BEGIN
373 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
374 RAISERROR('Taki klient nie istnieje!', 11, 3)
375 ELSE BEGIN
376 UPDATE klient
377 SET nazwisko = @nazwisko
378 WHERE id = @id
379 END
380 END
381
382 IF @login IS NOT NULL BEGIN
383 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
384 RAISERROR('Taki klient nie istnieje!', 11, 3)
385 ELSE BEGIN
386 DECLARE @idU int
387 DECLARE @idK int
388 SELECT @idU = id FROM Uzytkownik WHERE login = @login
389 SELECT @idK = id FROM Klient WHERE idUzytkownika = @idU
390
391 UPDATE klient
392 SET nazwisko = @nazwisko
393 WHERE id = @idK
394 END
395 END
396
397 IF @id IS NULL
398 IF @login IS NULL
399 RAISERROR('Podaj jeden parametr!', 11, 3)
400GO
401
402CREATE PROCEDURE klient_zmienAdres
403 @id int = NULL,
404 @login varchar(50) = NULL,
405 @adres varchar(300)
406AS
407 IF @id IS NOT NULL
408 IF @login IS NOT NULL BEGIN
409 RAISERROR('Podaj jeden parametr!', 11, 3)
410 RETURN
411 END
412
413 IF @id IS NOT NULL BEGIN
414 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
415 RAISERROR('Taki klient nie istnieje!', 11, 3)
416 ELSE BEGIN
417 UPDATE klient
418 SET adres = @adres
419 WHERE id = @id
420 END
421 END
422
423 IF @login IS NOT NULL BEGIN
424 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
425 RAISERROR('Taki klient nie istnieje!', 11, 3)
426 ELSE BEGIN
427 DECLARE @idU int
428 DECLARE @idK int
429 SELECT @idU = id FROM Uzytkownik WHERE login = @login
430 SELECT @idK = id FROM Klient WHERE idUzytkownika = @idU
431
432 UPDATE klient
433 SET adres = @adres
434 WHERE id = @idK
435 END
436 END
437
438 IF @id IS NULL
439 IF @login IS NULL
440 RAISERROR('Podaj jeden parametr!', 11, 3)
441GO
442
443CREATE PROCEDURE klient_zmienTelefon
444 @id int = NULL,
445 @login varchar(50) = NULL,
446 @telefon varchar(11)
447AS
448 IF @id IS NOT NULL
449 IF @login IS NOT NULL BEGIN
450 RAISERROR('Podaj jeden parametr!', 11, 3)
451 RETURN
452 END
453
454 IF @id IS NOT NULL BEGIN
455 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
456 RAISERROR('Taki klient nie istnieje!', 11, 3)
457 ELSE BEGIN
458 UPDATE klient
459 SET telefon = @telefon
460 WHERE id = @id
461 END
462 END
463
464 IF @login IS NOT NULL BEGIN
465 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
466 RAISERROR('Taki klient nie istnieje!', 11, 3)
467 ELSE BEGIN
468 DECLARE @idU int
469 DECLARE @idK int
470 SELECT @idU = id FROM Uzytkownik WHERE login = @login
471 SELECT @idK = id FROM Klient WHERE idUzytkownika = @idU
472
473 UPDATE klient
474 SET telefon = @telefon
475 WHERE id = @idK
476 END
477 END
478
479 IF @id IS NULL
480 IF @login IS NULL
481 RAISERROR('Podaj jeden parametr!', 11, 3)
482GO
483
484CREATE PROCEDURE klient_zmienMail
485 @id int = NULL,
486 @login varchar(50) = NULL,
487 @email varchar(100)
488AS
489 IF @id IS NOT NULL
490 IF @login IS NOT NULL BEGIN
491 RAISERROR('Podaj jeden parametr!', 11, 3)
492 RETURN
493 END
494
495 IF EXISTS (SELECT * FROM Klient WHERE email = @email) BEGIN
496 RAISERROR('Email nie jest unikalny', 11, 3)
497 RETURN
498 END
499
500 IF @id IS NOT NULL BEGIN
501 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
502 RAISERROR('Taki klient nie istnieje!', 11, 3)
503 ELSE BEGIN
504 UPDATE klient
505 SET email = @email
506 WHERE id = @id
507 END
508 END
509
510 IF @login IS NOT NULL BEGIN
511 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
512 RAISERROR('Taki klient nie istnieje!', 11, 3)
513 ELSE BEGIN
514 DECLARE @idU int
515 DECLARE @idK int
516 SELECT @idU = id FROM Uzytkownik WHERE login = @login
517 SELECT @idK = id FROM Klient WHERE idUzytkownika = @idU
518
519 UPDATE klient
520 SET email = @email
521 WHERE id = @idK
522 END
523 END
524
525 IF @id IS NULL
526 IF @login IS NULL
527 RAISERROR('Podaj jeden parametr!', 11, 3)
528GO
529
530CREATE PROCEDURE klient_awansuj
531 @id int = NULL,
532 @login varchar(50) = NULL
533AS
534 IF @id IS NOT NULL
535 IF @login IS NOT NULL BEGIN
536 RAISERROR('Podaj jeden parametr!', 11, 3)
537 RETURN
538 END
539
540 IF @id IS NOT NULL BEGIN
541 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
542 RAISERROR('Taki klient nie istnieje!', 11, 3)
543 ELSE BEGIN
544 DECLARE @idU int
545 SELECT @idU = Klient.idUzytkownika FROM Klient WHERE id = @id
546
547 UPDATE uzytkownik
548 SET rola = 3
549 WHERE id = @idU
550 END
551 END
552
553 IF @login IS NOT NULL BEGIN
554 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
555 RAISERROR('Taki klient nie istnieje!', 11, 3)
556 ELSE BEGIN
557 UPDATE uzytkownik
558 SET rola = 3
559 WHERE login = @login
560 END
561 END
562
563 IF @id IS NULL
564 IF @login IS NULL
565 RAISERROR('Podaj jeden parametr!', 11, 3)
566GO
567
568CREATE PROCEDURE klient_degraduj
569 @id int = NULL,
570 @login varchar(50) = NULL
571AS
572 IF @id IS NOT NULL
573 IF @login IS NOT NULL BEGIN
574 RAISERROR('Podaj jeden parametr!', 11, 3)
575 RETURN
576 END
577
578 IF @id IS NOT NULL BEGIN
579 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
580 RAISERROR('Taki klient nie istnieje!', 11, 3)
581 ELSE BEGIN
582 DECLARE @idU int
583 SELECT @idU = Klient.idUzytkownika FROM Klient WHERE id = @id
584
585 UPDATE uzytkownik
586 SET rola = 2
587 WHERE id = @idU
588 END
589 END
590
591 IF @login IS NOT NULL BEGIN
592 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
593 RAISERROR('Taki klient nie istnieje!', 11, 3)
594 ELSE BEGIN
595 UPDATE uzytkownik
596 SET rola = 2
597 WHERE login = @login
598 END
599 END
600
601 IF @id IS NULL
602 IF @login IS NULL
603 RAISERROR('Podaj jeden parametr!', 11, 3)
604GO
605
606----
607
608CREATE PROCEDURE administrator_dodawanie
609 @login varchar(45),
610 @haslo varchar(45)
611AS
612 IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
613 RAISERROR('Taki login jest już zajęty!', 11, 1)
614 ELSE
615 BEGIN
616 INSERT INTO uzytkownik
617 VALUES(@login, @haslo, 'true', 1)
618 END
619GO
620
621----
622
623CREATE PROCEDURE moderator_dodawanie
624 @login varchar(45),
625 @haslo varchar(45)
626AS
627 IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
628 RAISERROR('Taki login jest już zajęty!', 11, 1)
629 ELSE
630 BEGIN
631 INSERT INTO uzytkownik
632 VALUES(@login, @haslo, 'true', 4)
633 END
634GO
635
636----
637
638CREATE FUNCTION klient_lista(@czyAktywny bit)
639RETURNS TABLE
640AS
641RETURN (SELECT k.id, u.login, k.imie, k.nazwisko, k.adres, k.telefon, k.email, r.nazwa FROM Klient k
642 JOIN Uzytkownik u on u.id = k.idUzytkownika
643 JOIN Rola r on r.id = u.rola
644 WHERE u.czyAktywny = @czyAktywny)
645GO
646
647CREATE FUNCTION specjalni_lista(@czyAktywny bit)
648RETURNS TABLE
649AS
650RETURN (SELECT u.id, u.login, r.nazwa FROM Uzytkownik u
651 JOIN Rola r on r.id = u.rola
652 WHERE rola IN (1,4) AND u.czyAktywny = @czyAktywny)
653GO
654
655----
656
657CREATE PROCEDURE towar_dodawanieNowego
658 @producent varchar(100),
659 @nazwa varchar(100),
660 @ilosc int,
661 @cenaNetto money
662AS
663 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
664 RAISERROR('Taki towar jest już w bazie!', 11, 1)
665 ELSE IF @ilosc <0
666 RAISERROR('Ilosc nie moze byc mniejsza od 0!', 11, 1)
667 ELSE IF @cenaNetto <0
668 RAISERROR('Cena nie moze byc ujemna!', 11, 1)
669 ELSE
670 BEGIN
671 INSERT INTO towar(producent, nazwa, ilosc, cenaNetto)
672 VALUES(@producent, @nazwa, @ilosc, @cenaNetto)
673 END
674GO
675
676CREATE PROCEDURE towar_wycofanie
677 @id int = NULL,
678 @nazwa varchar(100) = NULL
679AS
680 IF @id IS NOT NULL
681 IF @nazwa IS NOT NULL BEGIN
682 RAISERROR('Podaj jeden parametr!', 11, 3)
683 RETURN
684 END
685
686 IF @id IS NULL
687 IF @nazwa IS NULL BEGIN
688 RAISERROR('Podaj jeden parametr!', 11, 3)
689 RETURN
690 END
691
692 IF @id IS NOT NULL
693 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
694 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
695 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
696 RAISERROR('Ten towar ma juz status niedostepny!', 11, 1)
697 ELSE BEGIN
698 UPDATE towar
699 SET czyDostepny = 'false'
700 WHERE id = @id
701 END
702
703 IF @nazwa IS NOT NULL
704 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
705 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
706 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
707 RAISERROR('Ten towar ma juz status niedostepny!', 11, 1)
708 ELSE BEGIN
709 UPDATE towar
710 SET czyDostepny = 'false'
711 WHERE nazwa = @nazwa
712 END
713GO
714
715CREATE PROCEDURE towar_przywracanie
716 @id int = NULL,
717 @nazwa varchar(100) = NULL
718AS
719 IF @id IS NOT NULL
720 IF @nazwa IS NOT NULL BEGIN
721 RAISERROR('Podaj jeden parametr!', 11, 3)
722 RETURN
723 END
724
725 IF @id IS NULL
726 IF @nazwa IS NULL BEGIN
727 RAISERROR('Podaj jeden parametr!', 11, 3)
728 RETURN
729 END
730
731 IF @id IS NOT NULL
732 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
733 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
734 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'true')
735 RAISERROR('Ten towar ma juz status dostepny!', 11, 1)
736 ELSE BEGIN
737 UPDATE towar
738 SET czyDostepny = 'true'
739 WHERE id = @id
740 END
741
742 IF @nazwa IS NOT NULL
743 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
744 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
745 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'true')
746 RAISERROR('Ten towar ma juz status dostepny!', 11, 1)
747 ELSE BEGIN
748 UPDATE towar
749 SET czyDostepny = 'true'
750 WHERE nazwa = @nazwa
751 END
752GO
753
754CREATE PROCEDURE towar_dostawa
755 @id int = NULL,
756 @nazwa varchar(100) = NULL,
757 @ilosc int
758AS
759 IF @id IS NOT NULL
760 IF @nazwa IS NOT NULL BEGIN
761 RAISERROR('Podaj jeden parametr!', 11, 3)
762 RETURN
763 END
764
765 IF @id IS NULL
766 IF @nazwa IS NULL BEGIN
767 RAISERROR('Podaj jeden parametr!', 11, 3)
768 RETURN
769 END
770
771 DECLARE @obecnaIlosc int
772 IF @id IS NOT NULL
773 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
774 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
775 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
776 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
777 ELSE BEGIN
778 SELECT @obecnaIlosc = Towar.ilosc FROM towar WHERE id = @id
779
780 UPDATE towar
781 SET ilosc = @obecnaIlosc + @ilosc
782 WHERE id = @id
783 END
784
785 IF @nazwa IS NOT NULL
786 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
787 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
788 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
789 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
790 ELSE BEGIN
791 SELECT @obecnaIlosc = Towar.ilosc FROM towar WHERE nazwa = @nazwa
792
793 UPDATE towar
794 SET ilosc = @obecnaIlosc + @ilosc
795 WHERE nazwa = @nazwa
796 END
797GO
798
799CREATE PROCEDURE towar_zmienIlosc
800 @id int = NULL,
801 @nazwa varchar(100) = NULL,
802 @ilosc int
803AS
804 IF @id IS NOT NULL
805 IF @nazwa IS NOT NULL BEGIN
806 RAISERROR('Podaj jeden parametr!', 11, 3)
807 RETURN
808 END
809
810 IF @id IS NULL
811 IF @nazwa IS NULL BEGIN
812 RAISERROR('Podaj jeden parametr!', 11, 3)
813 RETURN
814 END
815
816 IF @id IS NOT NULL
817 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
818 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
819 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
820 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
821 ELSE BEGIN
822 UPDATE towar
823 SET ilosc = @ilosc
824 WHERE id = @id
825 END
826
827 IF @nazwa IS NOT NULL
828 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
829 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
830 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
831 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
832 ELSE BEGIN
833 UPDATE towar
834 SET ilosc = @ilosc
835 WHERE nazwa = @nazwa
836 END
837GO
838
839CREATE PROCEDURE towar_zmienCene
840 @id int = NULL,
841 @nazwa varchar(100) = NULL,
842 @cenaNetto money
843AS
844 IF @id IS NOT NULL
845 IF @nazwa IS NOT NULL BEGIN
846 RAISERROR('Podaj jeden parametr!', 11, 3)
847 RETURN
848 END
849
850 IF @id IS NULL
851 IF @nazwa IS NULL BEGIN
852 RAISERROR('Podaj jeden parametr!', 11, 3)
853 RETURN
854 END
855
856 IF @id IS NOT NULL
857 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
858 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
859 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
860 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
861 ELSE BEGIN
862 UPDATE towar
863 SET cenaNetto = @cenaNetto
864 WHERE id = @id
865 END
866
867 IF @nazwa IS NOT NULL
868 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
869 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
870 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
871 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
872 ELSE BEGIN
873 UPDATE towar
874 SET cenaNetto = @cenaNetto
875 WHERE nazwa = @nazwa
876 END
877GO
878
879CREATE PROCEDURE towar_zmienNazwe
880 @id int = NULL,
881 @nazwa varchar(100) = NULL,
882 @nowaNazwa varchar(100)
883AS
884 IF @id IS NOT NULL
885 IF @nazwa IS NOT NULL BEGIN
886 RAISERROR('Podaj jeden parametr!', 11, 3)
887 RETURN
888 END
889
890 IF @id IS NULL
891 IF @nazwa IS NULL BEGIN
892 RAISERROR('Podaj jeden parametr!', 11, 3)
893 RETURN
894 END
895
896 IF @id IS NOT NULL
897 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
898 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
899 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
900 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
901 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nowaNazwa)
902 RAISERROR('Ta nazwa towaru jest juz zajeta!', 11, 1)
903 ELSE BEGIN
904 UPDATE towar
905 SET nazwa = @nowaNazwa
906 WHERE id = @id
907 END
908
909 IF @nazwa IS NOT NULL
910 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
911 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
912 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
913 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
914 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nowaNazwa)
915 RAISERROR('Ta nazwa towaru jest juz zajeta!', 11, 1)
916 ELSE BEGIN
917 UPDATE towar
918 SET nazwa = @nowaNazwa
919 WHERE nazwa = @nazwa
920 END
921GO
922
923----
924
925CREATE FUNCTION towar_producent(@producent varchar(100))
926RETURNS TABLE
927AS
928RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
929 WHERE t.producent = @producent)
930GO
931
932CREATE FUNCTION towar_nazwa(@nazwa varchar(100))
933RETURNS TABLE
934AS
935RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
936 WHERE t.nazwa LIKE + '%' + @nazwa + '%')
937GO
938
939CREATE FUNCTION towar_mniejNiz(@ilosc int)
940RETURNS TABLE
941AS
942RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
943 WHERE t.ilosc < @ilosc)
944GO
945
946CREATE FUNCTION towar_wiecejNiz(@ilosc int)
947RETURNS TABLE
948AS
949RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
950 WHERE t.ilosc > @ilosc)
951GO
952
953CREATE FUNCTION towar_tanszyNiz(@cenaBrutto money)
954RETURNS TABLE
955AS
956RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
957 WHERE t.cenaBrutto < @cenaBrutto)
958GO
959
960CREATE FUNCTION towar_drozszyNiz(@cenaBrutto money)
961RETURNS TABLE
962AS
963RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
964 WHERE t.cenaBrutto > @cenaBrutto)
965GO
966
967CREATE FUNCTION towar_tanszyNizNetto(@cenaNetto money)
968RETURNS TABLE
969AS
970RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
971 WHERE t.cenaNetto < @cenaNetto)
972GO
973
974CREATE FUNCTION towar_drozszyNizNetto(@cenaNetto money)
975RETURNS TABLE
976AS
977RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
978 WHERE t.cenaNetto > @cenaNetto)
979GO
980
981CREATE FUNCTION towar_czyDostepny(@czyDostepny bit)
982RETURNS TABLE
983AS
984RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
985 WHERE czyDostepny = @czyDostepny)
986GO
987
988----
989
990CREATE PROCEDURE towar_filtrowanie
991 @producent varchar(100) = NULL,
992 @nazwa varchar(100) = NULL,
993 @ilosc int = NULL,
994 @ilosc_mniejNiz int = NULL,
995 @ilosci_wiecejNiz int = NULL,
996 @cenaNetto money = NULL,
997 @cenaNetto_mniejNiz money = NULL,
998 @cenaNetto_wiecejNiz money = NULL,
999 @cenaBrutto money = NULL,
1000 @cenaBrutto_mniejNiz money = NULL,
1001 @cenaBrutto_wiecejNiz money = NULL,
1002 @czyDostepny bit = NULL
1003AS
1004 DECLARE @Query nvarchar(2000)
1005 DECLARE @Params nvarchar(2000)
1006
1007 SET @Query = 'SELECT * FROM towar WHERE 1=1'
1008 SET @Params = '@producent varchar(100),
1009 @nazwa varchar(100),
1010 @ilosc int,
1011 @ilosc_mniejNiz int,
1012 @ilosci_wiecejNiz int,
1013 @cenaNetto money,
1014 @cenaNetto_mniejNiz money,
1015 @cenaNetto_wiecejNiz money,
1016 @cenaBrutto money,
1017 @cenaBrutto_mniejNiz money,
1018 @cenaBrutto_wiecejNiz money,
1019 @czyDostepny bit'
1020
1021 IF @producent IS NOT NULL
1022 SET @Query = @Query + 'AND (producent = @producent)'
1023 IF @nazwa IS NOT NULL
1024 SET @Query = @Query + 'AND (nazwa like ''%' + @nazwa + '%'')'
1025 IF @ilosc IS NOT NULL
1026 SET @Query = @Query + 'AND (ilosc = @ilosc)'
1027 IF @ilosc_mniejNiz IS NOT NULL
1028 SET @Query = @Query + 'AND (ilosc < @ilosc_mniejNiz)'
1029 IF @ilosci_wiecejNiz IS NOT NULL
1030 SET @Query = @Query + 'AND (ilosc > @ilosci_wiecejNiz)'
1031
1032 IF @cenaNetto IS NOT NULL
1033 SET @Query = @Query + 'AND (cenaNetto = @cenaNetto)'
1034 IF @cenaNetto_mniejNiz IS NOT NULL
1035 SET @Query = @Query + 'AND (cenaNetto < @cenaNetto_mniejNiz)'
1036 IF @cenaNetto_wiecejNiz IS NOT NULL
1037 SET @Query = @Query + 'AND (cenaNetto > @cenaNetto_wiecejNiz)'
1038
1039 IF @cenaBrutto IS NOT NULL
1040 SET @Query = @Query + 'AND (cenaBrutto = @cenaBrutto)'
1041 IF @cenaBrutto_mniejNiz IS NOT NULL
1042 SET @Query = @Query + 'AND (cenaBrutto < @cenaBrutto_mniejNiz)'
1043 IF @cenaBrutto_wiecejNiz IS NOT NULL
1044 SET @Query = @Query + 'AND (cenaBrutto > @cenaBrutto_wiecejNiz)'
1045
1046 IF @czyDostepny IS NOT NULL
1047 SET @Query = @Query + 'AND (czyDostepny = @czyDostepny)'
1048
1049 execute sp_executesql @Query, @Params,
1050 @producent, @nazwa,
1051 @ilosc, @ilosc_mniejNiz, @ilosci_wiecejNiz,
1052 @cenaNetto, @cenaNetto_mniejNiz, @cenaNetto_wiecejNiz,
1053 @cenaBrutto, @cenaBrutto_mniejNiz, @cenaBrutto_wiecejNiz,
1054 @czyDostepny
1055GO
1056
1057----
1058
1059CREATE PROCEDURE zamowienie_utworzNowe
1060 @idKlienta int = NULL,
1061 @login varchar(50) = NULL,
1062 @dataZamowienia date = NULL
1063AS
1064 IF @idKlienta IS NOT NULL
1065 IF @login IS NOT NULL BEGIN
1066 RAISERROR('Podaj idKlienta LUB login!', 11, 1)
1067 RETURN
1068 END
1069
1070 IF @idKlienta IS NULL
1071 IF @login IS NULL BEGIN
1072 RAISERROR('Podaj idKlienta lub login!', 11, 1)
1073 RETURN
1074 END
1075
1076 DECLARE @status smallint
1077 DECLARE @data date
1078
1079 SELECT @status = id FROM Status WHERE nazwa = 'w trakcie'
1080 SELECT @data = CONVERT (date, getdate())
1081
1082 IF @idKlienta IS NOT NULL
1083 IF NOT EXISTS (SELECT * FROM Klient WHERE id = @idKlienta)
1084 RAISERROR('Taki klient nie istnieje w bazie', 11, 1)
1085 ELSE IF @dataZamowienia IS NULL BEGIN
1086 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1087 VALUES(@idKlienta, @data, @status)
1088 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
1089 END ELSE BEGIN
1090 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1091 VALUES(@idKlienta, @dataZamowienia, @status)
1092 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
1093 END
1094
1095 IF @login IS NOT NULL
1096 IF NOT EXISTS (SELECT * FROM Uzytkownik WHERE login = @login)
1097 RAISERROR('Klient z takim loginem nie istnieje w bazie', 11, 1)
1098 ELSE BEGIN
1099 DECLARE @idK int
1100 SELECT @idK = id FROM Klient WHERE idUzytkownika = (SELECT id FROM Uzytkownik WHERE login = @login)
1101
1102 IF @dataZamowienia IS NULL BEGIN
1103 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1104 VALUES(@idK, @data, @status)
1105 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
1106 END ELSE BEGIN
1107 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1108 VALUES(@idK, @dataZamowienia, @status)
1109 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
1110 END
1111 END
1112GO
1113
1114CREATE PROCEDURE zamowienie_dodajTowar
1115 @idZamowienia int,
1116 @idTowaru int = NULL,
1117 @nazwaTowaru varchar(100) = NULL,
1118 @ilosc int = NULL
1119AS
1120 IF @idZamowienia IS NULL BEGIN
1121 RAISERROR('Podaj id zamowienia!', 11, 1)
1122 RETURN
1123 END
1124
1125 IF NOT EXISTS (SELECT * FROM Zamowienie WHERE id = @idZamowienia) BEGIN
1126 RAISERROR('Zamowienie z takim id nie istnieje', 11, 1)
1127 RETURN
1128 END
1129
1130 IF @idTowaru IS NULL
1131 IF @nazwaTowaru IS NULL BEGIN
1132 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1133 RETURN
1134 END
1135
1136 IF @idTowaru IS NOT NULL
1137 IF @nazwaTowaru IS NOT NULL BEGIN
1138 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1139 RETURN
1140 END
1141
1142 DECLARE @kwota money
1143 DECLARE @status varchar(50)
1144 SELECT @status = id FROM Status WHERE nazwa = 'w trakcie'
1145
1146 IF (SELECT status FROM Zamowienie WHERE id = @idZamowienia) != @status
1147 RAISERROR('Nie da sie edytowac tego zamowienia. Sprawdz status zamowienia.', 11, 1)
1148
1149 IF @idTowaru IS NOT NULL
1150 IF NOT EXISTS (SELECT * FROM Towar WHERE id = @idTowaru)
1151 RAISERROR('Towar z takim id nie istnieje', 11, 1)
1152 ELSE IF EXISTS (SELECT * FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru)
1153 RAISERROR('W zamowieniu o danym id znajduje sie juz towar o danym id', 11, 1)
1154 ELSE IF (SELECT ilosc FROM Towar WHERE id = @idTowaru) < @ilosc
1155 RAISERROR('Nie ma takiej ilosci w magazynie!', 11, 1)
1156 ELSE BEGIN
1157 SELECT @kwota = @ilosc * cenaNetto FROM Towar WHERE id = @idTowaru
1158
1159 INSERT INTO Zamowienie_Towar(idZamowienia, idTowaru, ilosc, cena)
1160 VALUES (@idZamowienia, @idTowaru, @ilosc, @kwota)
1161
1162 UPDATE Zamowienie
1163 SET wartosc = wartosc + @kwota
1164 WHERE id = @idZamowienia
1165
1166 UPDATE Towar
1167 SET ilosc = ilosc - @ilosc
1168 WHERE id = @idTowaru
1169 END
1170
1171 IF @nazwaTowaru IS NOT NULL
1172 IF NOT EXISTS (SELECT * FROM Towar WHERE nazwa = @nazwaTowaru)
1173 RAISERROR('Towar z taka nazwa nie istnieje', 11, 1)
1174 ELSE IF EXISTS (SELECT * FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = (SELECT id FROM Towar WHERE nazwa = @nazwaTowaru))
1175 RAISERROR('W zamowieniu o danym id znajduje sie juz towar o danej nazwie', 11, 1)
1176 ELSE IF (SELECT ilosc FROM Towar WHERE nazwa = @nazwaTowaru) < @ilosc
1177 RAISERROR('Nie ma takiej ilosci w magazynie!', 11, 1)
1178 ELSE BEGIN
1179 SELECT @kwota = @ilosc * cenaNetto FROM Towar WHERE nazwa = @nazwaTowaru
1180
1181 DECLARE @idT int
1182 SELECT @idT = id FROM Towar WHERE nazwa = @nazwaTowaru
1183
1184 INSERT INTO Zamowienie_Towar(idZamowienia, idTowaru, ilosc, cena)
1185 VALUES (@idZamowienia, @idT, @ilosc, @kwota)
1186
1187 UPDATE Zamowienie
1188 SET wartosc = wartosc + @kwota
1189 WHERE id = @idZamowienia
1190
1191 UPDATE Towar
1192 SET ilosc = ilosc - @ilosc
1193 WHERE nazwa = @nazwaTowaru
1194 END
1195GO
1196
1197CREATE PROCEDURE zamowienie_usunTowar
1198 @idZamowienia int,
1199 @idTowaru int = NULL,
1200 @nazwaTowaru varchar(100) = NULL
1201AS
1202 IF @idZamowienia IS NULL BEGIN
1203 RAISERROR('Podaj id zamowienia!', 11, 1)
1204 RETURN
1205 END
1206
1207 IF NOT EXISTS (SELECT * FROM Zamowienie WHERE id = @idZamowienia) BEGIN
1208 RAISERROR('Zamowienie z takim id nie istnieje', 11, 1)
1209 RETURN
1210 END
1211
1212 IF @idTowaru IS NULL
1213 IF @nazwaTowaru IS NULL BEGIN
1214 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1215 RETURN
1216 END
1217
1218 IF @idTowaru IS NOT NULL
1219 IF @nazwaTowaru IS NOT NULL BEGIN
1220 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1221 RETURN
1222 END
1223
1224 DECLARE @kwota money
1225 DECLARE @ilosc int
1226
1227 DECLARE @status varchar(50)
1228 SELECT @status = id FROM Status WHERE nazwa = 'w trakcie'
1229
1230 IF (SELECT status FROM Zamowienie WHERE id = @idZamowienia) != @status
1231 RAISERROR('Nie da sie edytowac tego zamowienia. Sprawdz status zamowienia.', 11, 1)
1232
1233 IF @idTowaru IS NOT NULL
1234 IF NOT EXISTS (SELECT * FROM Towar WHERE id = @idTowaru)
1235 RAISERROR('Towar z takim id nie istnieje', 11, 1)
1236 ELSE IF NOT EXISTS (SELECT * FROM Zamowienie_Towar WHERE idTowaru = @idTowaru AND idZamowienia = @idZamowienia)
1237 RAISERROR('W tym zamowieniu nie ma takiego towaru', 11, 1)
1238 ELSE BEGIN
1239 SELECT @kwota = cena FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru
1240 SELECT @ilosc = ilosc FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru
1241
1242 DELETE FROM Zamowienie_Towar
1243 WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru
1244
1245 UPDATE Zamowienie
1246 SET wartosc = wartosc - @kwota
1247 WHERE id = @idZamowienia
1248
1249 UPDATE Towar
1250 SET ilosc = ilosc + @ilosc
1251 WHERE id = @idTowaru
1252 END
1253
1254 IF @nazwaTowaru IS NOT NULL BEGIN
1255 DECLARE @idT int
1256 SELECT @idT = id FROM Towar WHERE nazwa = @nazwaTowaru
1257
1258 IF NOT EXISTS (SELECT * FROM Towar WHERE nazwa = @nazwaTowaru)
1259 RAISERROR('Towar z taka nazwa nie istnieje', 11, 1)
1260 ELSE IF NOT EXISTS (SELECT * FROM Zamowienie_Towar WHERE idTowaru = @idT AND idZamowienia = @idZamowienia)
1261 RAISERROR('W tym zamowieniu nie ma takiego towaru', 11, 1)
1262 ELSE BEGIN
1263 SELECT @kwota = cena FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idT
1264 SELECT @ilosc = ilosc FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idT
1265
1266 DELETE FROM Zamowienie_Towar
1267 WHERE idZamowienia = @idZamowienia AND idTowaru = @idT
1268
1269 UPDATE Zamowienie
1270 SET wartosc = wartosc - @kwota
1271 WHERE id = @idZamowienia
1272
1273 UPDATE Towar
1274 SET ilosc = ilosc + @ilosc
1275 WHERE id = @idT
1276 END
1277 END
1278GO