· 9 years ago · Feb 01, 2017, 06:32 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
682 RAISERROR('Podaj jeden parametr!', 11, 3)
683
684 IF @id IS NULL
685 IF @nazwa IS NULL
686 RAISERROR('Podaj jeden parametr!', 11, 3)
687
688 IF @id IS NOT NULL
689 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
690 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
691 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
692 RAISERROR('Ten towar ma juz status niedostepny!', 11, 1)
693 ELSE BEGIN
694 UPDATE towar
695 SET czyDostepny = 'false'
696 WHERE id = @id
697 END
698
699 IF @nazwa IS NOT NULL
700 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
701 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
702 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
703 RAISERROR('Ten towar ma juz status niedostepny!', 11, 1)
704 ELSE BEGIN
705 UPDATE towar
706 SET czyDostepny = 'false'
707 WHERE nazwa = @nazwa
708 END
709GO
710
711CREATE PROCEDURE towar_przywracanie
712 @id int = NULL,
713 @nazwa varchar(100) = NULL
714AS
715 IF @id IS NOT NULL
716 IF @nazwa IS NOT NULL
717 RAISERROR('Podaj jeden parametr!', 11, 3)
718
719 IF @id IS NULL
720 IF @nazwa IS NULL
721 RAISERROR('Podaj jeden parametr!', 11, 3)
722
723 IF @id IS NOT NULL
724 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
725 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
726 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'true')
727 RAISERROR('Ten towar ma juz status dostepny!', 11, 1)
728 ELSE BEGIN
729 UPDATE towar
730 SET czyDostepny = 'true'
731 WHERE id = @id
732 END
733
734 IF @nazwa IS NOT NULL
735 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
736 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
737 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'true')
738 RAISERROR('Ten towar ma juz status dostepny!', 11, 1)
739 ELSE BEGIN
740 UPDATE towar
741 SET czyDostepny = 'true'
742 WHERE nazwa = @nazwa
743 END
744GO
745
746CREATE PROCEDURE towar_dostawa
747 @id int = NULL,
748 @nazwa varchar(100) = NULL,
749 @ilosc int
750AS
751 IF @id IS NOT NULL
752 IF @nazwa IS NOT NULL
753 RAISERROR('Podaj jeden parametr!', 11, 3)
754
755 IF @id IS NULL
756 IF @nazwa IS NULL
757 RAISERROR('Podaj jeden parametr!', 11, 3)
758
759 DECLARE @obecnaIlosc int
760 IF @id IS NOT NULL
761 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
762 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
763 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
764 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
765 ELSE BEGIN
766 SELECT @obecnaIlosc = Towar.ilosc FROM towar WHERE id = @id
767
768 UPDATE towar
769 SET ilosc = @obecnaIlosc + @ilosc
770 WHERE id = @id
771 END
772
773 IF @nazwa IS NOT NULL
774 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
775 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
776 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
777 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
778 ELSE BEGIN
779 SELECT @obecnaIlosc = Towar.ilosc FROM towar WHERE nazwa = @nazwa
780
781 UPDATE towar
782 SET ilosc = @obecnaIlosc + @ilosc
783 WHERE nazwa = @nazwa
784 END
785GO
786
787CREATE PROCEDURE towar_zmienIlosc
788 @id int = NULL,
789 @nazwa varchar(100) = NULL,
790 @ilosc int
791AS
792 IF @id IS NOT NULL
793 IF @nazwa IS NOT NULL
794 RAISERROR('Podaj jeden parametr!', 11, 3)
795
796 IF @id IS NULL
797 IF @nazwa IS NULL
798 RAISERROR('Podaj jeden parametr!', 11, 3)
799
800 IF @id IS NOT NULL
801 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
802 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
803 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
804 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
805 ELSE BEGIN
806 UPDATE towar
807 SET ilosc = @ilosc
808 WHERE id = @id
809 END
810
811 IF @nazwa IS NOT NULL
812 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
813 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
814 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
815 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
816 ELSE BEGIN
817 UPDATE towar
818 SET ilosc = @ilosc
819 WHERE nazwa = @nazwa
820 END
821GO
822
823CREATE PROCEDURE towar_zmienCene
824 @id int = NULL,
825 @nazwa varchar(100) = NULL,
826 @cenaNetto money
827AS
828 IF @id IS NOT NULL
829 IF @nazwa IS NOT NULL
830 RAISERROR('Podaj jeden parametr!', 11, 3)
831
832 IF @id IS NULL
833 IF @nazwa IS NULL
834 RAISERROR('Podaj jeden parametr!', 11, 3)
835
836 IF @id IS NOT NULL
837 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
838 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
839 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
840 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
841 ELSE BEGIN
842 UPDATE towar
843 SET cenaNetto = @cenaNetto
844 WHERE id = @id
845 END
846
847 IF @nazwa IS NOT NULL
848 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
849 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
850 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
851 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
852 ELSE BEGIN
853 UPDATE towar
854 SET cenaNetto = @cenaNetto
855 WHERE nazwa = @nazwa
856 END
857GO
858
859CREATE PROCEDURE towar_zmienNazwe
860 @id int = NULL,
861 @nazwa varchar(100) = NULL,
862 @nowaNazwa varchar(100)
863AS
864 IF @id IS NOT NULL
865 IF @nazwa IS NOT NULL
866 RAISERROR('Podaj jeden parametr!', 11, 3)
867
868 IF @id IS NULL
869 IF @nazwa IS NULL
870 RAISERROR('Podaj jeden parametr!', 11, 3)
871
872 IF @id IS NOT NULL
873 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
874 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
875 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
876 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
877 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nowaNazwa)
878 RAISERROR('Ta nazwa towaru jest juz zajeta!', 11, 1)
879 ELSE BEGIN
880 UPDATE towar
881 SET nazwa = @nowaNazwa
882 WHERE id = @id
883 END
884
885 IF @nazwa IS NOT NULL
886 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
887 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
888 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
889 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
890 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nowaNazwa)
891 RAISERROR('Ta nazwa towaru jest juz zajeta!', 11, 1)
892 ELSE BEGIN
893 UPDATE towar
894 SET nazwa = @nowaNazwa
895 WHERE nazwa = @nazwa
896 END
897GO
898
899----
900
901CREATE FUNCTION towar_producent(@producent varchar(100))
902RETURNS TABLE
903AS
904RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
905 WHERE t.producent = @producent)
906GO
907
908CREATE FUNCTION towar_nazwa(@nazwa varchar(100))
909RETURNS TABLE
910AS
911RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
912 WHERE t.nazwa LIKE + '%' + @nazwa + '%')
913GO
914
915CREATE FUNCTION towar_mniejNiz(@ilosc int)
916RETURNS TABLE
917AS
918RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
919 WHERE t.ilosc < @ilosc)
920GO
921
922CREATE FUNCTION towar_wiecejNiz(@ilosc int)
923RETURNS TABLE
924AS
925RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
926 WHERE t.ilosc > @ilosc)
927GO
928
929CREATE FUNCTION towar_tanszyNiz(@cenaBrutto money)
930RETURNS TABLE
931AS
932RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
933 WHERE t.cenaBrutto < @cenaBrutto)
934GO
935
936CREATE FUNCTION towar_drozszyNiz(@cenaBrutto money)
937RETURNS TABLE
938AS
939RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
940 WHERE t.cenaBrutto > @cenaBrutto)
941GO
942
943CREATE FUNCTION towar_tanszyNizNetto(@cenaNetto money)
944RETURNS TABLE
945AS
946RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
947 WHERE t.cenaNetto < @cenaNetto)
948GO
949
950CREATE FUNCTION towar_drozszyNizNetto(@cenaNetto money)
951RETURNS TABLE
952AS
953RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
954 WHERE t.cenaNetto > @cenaNetto)
955GO
956
957CREATE FUNCTION towar_czyDostepny(@czyDostepny bit)
958RETURNS TABLE
959AS
960RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
961 WHERE czyDostepny = @czyDostepny)
962GO
963
964----
965
966CREATE PROCEDURE towar_filtrowanie
967 @producent varchar(100) = NULL,
968 @nazwa varchar(100) = NULL,
969 @ilosc int = NULL,
970 @ilosc_mniejNiz int = NULL,
971 @ilosci_wiecejNiz int = NULL,
972 @cenaNetto money = NULL,
973 @cenaNetto_mniejNiz money = NULL,
974 @cenaNetto_wiecejNiz money = NULL,
975 @cenaBrutto money = NULL,
976 @cenaBrutto_mniejNiz money = NULL,
977 @cenaBrutto_wiecejNiz money = NULL,
978 @czyDostepny bit = NULL
979AS
980 DECLARE @Query nvarchar(2000)
981 DECLARE @Params nvarchar(2000)
982
983 SET @Query = 'SELECT * FROM towar WHERE 1=1'
984 SET @Params = '@producent varchar(100),
985 @nazwa varchar(100),
986 @ilosc int,
987 @ilosc_mniejNiz int,
988 @ilosci_wiecejNiz int,
989 @cenaNetto money,
990 @cenaNetto_mniejNiz money,
991 @cenaNetto_wiecejNiz money,
992 @cenaBrutto money,
993 @cenaBrutto_mniejNiz money,
994 @cenaBrutto_wiecejNiz money,
995 @czyDostepny bit'
996
997 IF @producent IS NOT NULL
998 SET @Query = @Query + 'AND (producent = @producent)'
999 IF @nazwa IS NOT NULL
1000 SET @Query = @Query + 'AND (nazwa like ''%' + @nazwa + '%'')'
1001 IF @ilosc IS NOT NULL
1002 SET @Query = @Query + 'AND (ilosc = @ilosc)'
1003 IF @ilosc_mniejNiz IS NOT NULL
1004 SET @Query = @Query + 'AND (ilosc < @ilosc_mniejNiz)'
1005 IF @ilosci_wiecejNiz IS NOT NULL
1006 SET @Query = @Query + 'AND (ilosc > @ilosci_wiecejNiz)'
1007
1008 IF @cenaNetto IS NOT NULL
1009 SET @Query = @Query + 'AND (cenaNetto = @cenaNetto)'
1010 IF @cenaNetto_mniejNiz IS NOT NULL
1011 SET @Query = @Query + 'AND (cenaNetto < @cenaNetto_mniejNiz)'
1012 IF @cenaNetto_wiecejNiz IS NOT NULL
1013 SET @Query = @Query + 'AND (cenaNetto > @cenaNetto_wiecejNiz)'
1014
1015 IF @cenaBrutto IS NOT NULL
1016 SET @Query = @Query + 'AND (cenaBrutto = @cenaBrutto)'
1017 IF @cenaBrutto_mniejNiz IS NOT NULL
1018 SET @Query = @Query + 'AND (cenaBrutto < @cenaBrutto_mniejNiz)'
1019 IF @cenaBrutto_wiecejNiz IS NOT NULL
1020 SET @Query = @Query + 'AND (cenaBrutto > @cenaBrutto_wiecejNiz)'
1021
1022 IF @czyDostepny IS NOT NULL
1023 SET @Query = @Query + 'AND (czyDostepny = @czyDostepny)'
1024
1025 execute sp_executesql @Query, @Params,
1026 @producent, @nazwa,
1027 @ilosc, @ilosc_mniejNiz, @ilosci_wiecejNiz,
1028 @cenaNetto, @cenaNetto_mniejNiz, @cenaNetto_wiecejNiz,
1029 @cenaBrutto, @cenaBrutto_mniejNiz, @cenaBrutto_wiecejNiz,
1030 @czyDostepny
1031GO
1032
1033----
1034
1035CREATE PROCEDURE zamowienie_utworzNowe
1036 @idKlienta int = NULL,
1037 @login varchar(50) = NULL,
1038 @dataZamowiena date = NULL
1039AS
1040 IF @idKlienta IS NOT NULL
1041 IF @login IS NOT NULL
1042 RAISERROR('Podaj idKlienta LUB login!', 11, 1)
1043
1044 IF @idKlienta IS NULL
1045 IF @login IS NULL
1046 RAISERROR('Podaj idKlienta lub login!', 11, 1)
1047
1048 DECLARE @status smallint
1049 DECLARE @data date
1050
1051 SELECT @status = id FROM Status WHERE nazwa = 'w trakcie'
1052 SELECT @data = CONVERT (date, SYSDATETIME())
1053
1054 IF @idKlienta IS NOT NULL
1055 IF NOT EXISTS (SELECT * FROM Klient WHERE id = @idKlienta)
1056 RAISERROR('Taki klient nie istnieje w bazie', 11, 1)
1057 ELSE IF @dataZamowiena IS NULL BEGIN
1058 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1059 VALUES(@idKlienta, @data, @status)
1060 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
1061 END ELSE BEGIN
1062 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1063 VALUES(@idKlienta, @dataZamowiena, @status)
1064 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
1065 END
1066
1067 IF @login IS NOT NULL
1068 IF NOT EXISTS (SELECT * FROM Uzytkownik WHERE login = @login)
1069 RAISERROR('Klient z takim loginem nie istnieje w bazie', 11, 1)
1070 ELSE BEGIN
1071 DECLARE @idK int
1072 SELECT @idK = id FROM Klient WHERE idUzytkownika = (SELECT id FROM Uzytkownik WHERE login = @login)
1073
1074 IF @dataZamowiena IS NULL BEGIN
1075 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1076 VALUES(@idK, @data, @status)
1077 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
1078 END ELSE BEGIN
1079 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1080 VALUES(@idK, @dataZamowiena, @status)
1081 PRINT('idZamowienia: ' + SCOPE_IDENTITY())
1082 END
1083 END
1084GO
1085
1086CREATE PROCEDURE zamowienie_dodajTowar
1087 @idZamowienia int,
1088 @idTowaru int = NULL,
1089 @nazwaTowaru varchar(100) = NULL,
1090 @ilosc int = NULL
1091AS
1092 IF @idZamowienia IS NULL
1093 RAISERROR('Podaj id zamowienia!', 11, 1)
1094
1095 IF NOT EXISTS (SELECT * FROM Zamowienie WHERE id = @idZamowienia)
1096 RAISERROR('Zamowienie z takim id nie istnieje', 11, 1)
1097
1098 IF @idTowaru IS NULL
1099 IF @nazwaTowaru IS NULL
1100 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1101
1102 IF @idTowaru IS NOT NULL
1103 IF @nazwaTowaru IS NOT NULL
1104 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1105
1106 DECLARE @kwota money
1107 DECLARE @status varchar(50)
1108 SELECT @status = id FROM Status WHERE nazwa = 'w trakcie'
1109
1110 IF (SELECT status FROM Zamowienie WHERE id = @idZamowienia) != @status
1111 RAISERROR('Nie da sie edytowac tego zamowienia. Sprawdz status zamowienia.', 11, 1)
1112
1113 IF @idTowaru IS NOT NULL
1114 IF NOT EXISTS (SELECT * FROM Towar WHERE id = @idTowaru)
1115 RAISERROR('Towar z takim id nie istnieje', 11, 1)
1116 ELSE IF EXISTS (SELECT * FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru)
1117 RAISERROR('W zamowieniu o danym id znajduje sie juz towar o danym id', 11, 1)
1118 ELSE IF (SELECT ilosc FROM Towar WHERE id = @idTowaru) < @ilosc
1119 RAISERROR('Nie ma takiej ilosci w magazynie!', 11, 1)
1120 ELSE BEGIN
1121 SELECT @kwota = @ilosc * cenaNetto FROM Towar WHERE id = @idTowaru
1122
1123 INSERT INTO Zamowienie_Towar(idZamowienia, idTowaru, ilosc, cena)
1124 VALUES (@idZamowienia, @idTowaru, @ilosc, @kwota)
1125
1126 UPDATE Zamowienie
1127 SET wartosc = wartosc + @kwota
1128 WHERE id = @idZamowienia
1129
1130 UPDATE Towar
1131 SET ilosc = ilosc - @ilosc
1132 WHERE id = @idTowaru
1133 END
1134
1135 IF @nazwaTowaru IS NOT NULL
1136 IF NOT EXISTS (SELECT * FROM Towar WHERE nazwa = @nazwaTowaru)
1137 RAISERROR('Towar z taka nazwa nie istnieje', 11, 1)
1138 ELSE IF EXISTS (SELECT * FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = (SELECT id FROM Towar WHERE nazwa = @nazwaTowaru))
1139 RAISERROR('W zamowieniu o danym id znajduje sie juz towar o danej nazwie', 11, 1)
1140 ELSE IF (SELECT ilosc FROM Towar WHERE nazwa = @nazwaTowaru) < @ilosc
1141 RAISERROR('Nie ma takiej ilosci w magazynie!', 11, 1)
1142 ELSE BEGIN
1143 SELECT @kwota = @ilosc * cenaNetto FROM Towar WHERE nazwa = @nazwaTowaru
1144
1145 DECLARE @idT int
1146 SELECT @idT = id FROM Towar WHERE nazwa = @nazwaTowaru
1147
1148 INSERT INTO Zamowienie_Towar(idZamowienia, idTowaru, ilosc, cena)
1149 VALUES (@idZamowienia, @idT, @ilosc, @kwota)
1150
1151 UPDATE Zamowienie
1152 SET wartosc = wartosc + @kwota
1153 WHERE id = @idZamowienia
1154
1155 UPDATE Towar
1156 SET ilosc = ilosc - @ilosc
1157 WHERE nazwa = @nazwaTowaru
1158 END
1159GO
1160
1161CREATE PROCEDURE zamowienie_usunTowar
1162 @idZamowienia int,
1163 @idTowaru int = NULL,
1164 @nazwaTowaru varchar(100) = NULL
1165AS
1166 IF @idZamowienia IS NULL
1167 RAISERROR('Podaj id zamowienia!', 11, 1)
1168
1169 IF NOT EXISTS (SELECT * FROM Zamowienie WHERE id = @idZamowienia)
1170 RAISERROR('Zamowienie z takim id nie istnieje', 11, 1)
1171
1172 IF @idTowaru IS NULL
1173 IF @nazwaTowaru IS NULL
1174 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1175
1176 IF @idTowaru IS NOT NULL
1177 IF @nazwaTowaru IS NOT NULL
1178 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1179
1180 DECLARE @kwota money
1181 DECLARE @ilosc int
1182
1183 DECLARE @status varchar(50)
1184 SELECT @status = id FROM Status WHERE nazwa = 'w trakcie'
1185
1186 IF (SELECT status FROM Zamowienie WHERE id = @idZamowienia) != @status
1187 RAISERROR('Nie da sie edytowac tego zamowienia. Sprawdz status zamowienia.', 11, 1)
1188
1189 IF @idTowaru IS NOT NULL
1190 IF NOT EXISTS (SELECT * FROM Towar WHERE id = @idTowaru)
1191 RAISERROR('Towar z takim id nie istnieje', 11, 1)
1192 ELSE IF NOT EXISTS (SELECT * FROM Zamowienie_Towar WHERE idTowaru = @idTowaru AND idZamowienia = @idZamowienia)
1193 RAISERROR('W tym zamowieniu nie ma takiego towaru', 11, 1)
1194 ELSE BEGIN
1195 SELECT @kwota = cena FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru
1196 SELECT @ilosc = ilosc FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru
1197
1198 DELETE FROM Zamowienie_Towar
1199 WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru
1200
1201 UPDATE Zamowienie
1202 SET wartosc = wartosc - @kwota
1203 WHERE id = @idZamowienia
1204
1205 UPDATE Towar
1206 SET ilosc = ilosc + @ilosc
1207 WHERE id = @idTowaru
1208 END
1209
1210 IF @nazwaTowaru IS NOT NULL BEGIN
1211 DECLARE @idT int
1212 SELECT @idT = id FROM Towar WHERE nazwa = @nazwaTowaru
1213
1214 IF NOT EXISTS (SELECT * FROM Towar WHERE nazwa = @nazwaTowaru)
1215 RAISERROR('Towar z taka nazwa nie istnieje', 11, 1)
1216 ELSE IF NOT EXISTS (SELECT * FROM Zamowienie_Towar WHERE idTowaru = @idT AND idZamowienia = @idZamowienia)
1217 RAISERROR('W tym zamowieniu nie ma takiego towaru', 11, 1)
1218 ELSE BEGIN
1219 SELECT @kwota = cena FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idT
1220 SELECT @ilosc = ilosc FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idT
1221
1222 DELETE FROM Zamowienie_Towar
1223 WHERE idZamowienia = @idZamowienia AND idTowaru = @idT
1224
1225 UPDATE Zamowienie
1226 SET wartosc = wartosc - @kwota
1227 WHERE id = @idZamowienia
1228
1229 UPDATE Towar
1230 SET ilosc = ilosc + @ilosc
1231 WHERE id = @idT
1232 END
1233 END
1234GO