· 9 years ago · Jan 18, 2017, 08:56 PM
1-------- zadatak 2 kreirati 3 procedure
2
3 -- Kreiranje tabele za cuvanje gresaka --
4CREATE TABLE ErrorLog
5(
6 [ErrorID] [int] IDENTITY(1,1) NOT NULL,
7 [ErrorTime] [datetime] NULL,
8 [ErrorNumber] [int] NOT NULL,
9 [ErrorSeverity] [int] NOT NULL,
10 [ErrorState] [int] NULL,
11 [ErrorProcedure] [nvarchar](126) NULL,
12 [ErrorLine] [int] NULL,
13 [ErrorMessage] [nvarchar](4000) NULL,
14 [UserName] [nvarchar](50) NULL,
15 [Resolved] [bit] NULL,
16 CONSTRAINT [PK_ErrorLog] PRIMARY KEY CLUSTERED ( [ErrorID] ASC ));
17 GO
18
19 -- Kreiranje Stored Procedure za cuvanje informacija o greskama --
20CREATE PROCEDURE ErrorHandler
21AS
22BEGIN
23 BEGIN TRY
24 INSERT INTO ErrorLog
25 (
26 [ErrorNumber]
27 , [ErrorSeverity]
28 , [ErrorState]
29 , [ErrorProcedure]
30 , [ErrorLine]
31 , [ErrorMessage]
32 )
33 VALUES
34 (
35 ERROR_NUMBER()
36 , ERROR_SEVERITY()
37 , ERROR_STATE()
38 , ERROR_PROCEDURE()
39 , ERROR_LINE()
40 , ERROR_MESSAGE()
41 )
42 END TRY
43 BEGIN CATCH
44 THROW;
45 END CATCH
46END
47GO
48
49SELECT * FROM [dbo].[ErrorLog]
50-------------------
51----------------------
52
53/* 2.1. INSERT novog proizovda i sprecavanje pojave duplikata */
54CREATE PROCEDURE NoviProizvod
55(
56@nazivProizvoda nchar (50),
57@cena int,
58@kategorijaID int,
59@slika nchar(150)
60)
61AS
62BEGIN
63 BEGIN TRY
64 BEGIN TRANSACTION
65 IF EXISTS (SELECT * FROM Proizvodi WHERE nazivProizvoda = @nazivProizvoda)
66 BEGIN
67 PRINT 'Greska u dodavanju novog proizvoda!';
68 raiserror('Postoji proizvod sa ovim nazivom',16,1)
69 END
70 ELSE
71 BEGIN
72 INSERT INTO dbo.Proizvodi(nazivProizvoda,cena,kategorijaID,slika) VALUES(@nazivProizvoda,@cena,@kategorijaID,@slika)
73 if @@trancount > 0
74 commit transaction
75 END
76 END TRY
77 BEGIN CATCH
78 declare @msg varchar(100) = error_message()
79 if @@trancount > 0
80 begin
81 raiserror(@msg,16,1)
82 EXECUTE dbo.ErrorHandler;
83 THROW;
84 rollback transaction
85 end
86 END CATCH
87END
88GO
89-- Pozivanje procedure 2.1 --
90EXEC NoviProizvod 'Nesto novoa',5555,22,N'/slike/brijic.jpg'
91GO
92------------------------
93SELECT * FROM dbo.Proizvodi
94-------------------------------------------------------------------------
95
96
97
98
99-- 2.2 Update procedura za promena telefona i emaila
100
101CREATE PROCEDURE UpdateKorisnika
102(
103@idKorisnika int,
104@telefon nchar(22),
105@email nchar(150)
106)
107AS
108BEGIN
109 BEGIN TRY
110 BEGIN TRANSACTION
111 IF NOT EXISTS(SELECT * FROM dbo.Users WHERE userID = @idKorisnika)
112 BEGIN
113 PRINT 'Korisnik ne postoji!';
114 raiserror('Greska sa ID-em, korisnik ne postoji',16,1)
115 END
116 ELSE
117 BEGIN
118 UPDATE dbo.Users SET eMail = @email, telefon = @telefon WHERE userID = @idKorisnika;
119 if @@trancount > 0
120 commit transaction
121 END
122 END TRY
123 BEGIN CATCH
124 declare @msg varchar(100) = error_message()
125 if @@trancount > 0
126 begin
127 raiserror(@msg,16,1)
128 EXECUTE dbo.ErrorHandler;
129 THROW;
130 rollback transaction
131 end
132 END CATCH
133END
134GO
135--- pozivanje procedure 2.3 update korisnika---
136EXEC UpdateKorisnika 11,'06555555','mojaprocedura'
137
138Select * from Users
139
140SELECT * FROM [dbo].[ErrorLog]
141-------------------
142----------------------
143--DROP PROCEDURE UpdateKorisnika
144
145
146---- 2.3 Procedura DELETE za brisanje proizvoda
147
148CREATE PROCEDURE ProizvodDelete
149(@idProizvoda int)
150AS
151BEGIN
152 BEGIN TRY
153 BEGIN TRANSACTION
154 IF EXISTS (SELECT * FROM Proizvodi WHERE proizvodID=@idProizvoda)
155 BEGIN
156 DELETE FROM Novosti WHERE proizvodID=@idProizvoda;
157 DELETE FROM Akcije WHERE proizvodID=@idProizvoda;
158 DELETE FROM Evidencija WHERE proizvodID=@idProizvoda;
159 DELETE FROM Komentari WHERE proizvodID=@idProizvoda;
160 DELETE FROM Proizvodi WHERE proizvodID=@idProizvoda;
161 PRINT 'Uspesno obrisan proizvod';
162 if @@trancount > 0
163 commit transaction
164 END
165 ELSE
166 BEGIN
167 PRINT 'Proizvod ne postoji!';
168 raiserror('Greska sa ID-em, proizvod ne postoji',16,1)
169 END
170 END TRY
171 BEGIN CATCH
172 declare @msg varchar(100) = error_message()
173 if @@trancount > 0
174 begin
175 raiserror(@msg,16,1)
176 EXECUTE dbo.ErrorHandler;
177 THROW;
178 rollback transaction
179 end
180 END CATCH
181END
182GO
183
184-- pozivanje procedure 2.3 delete proizvoda
185EXEC ProizvodDelete 54
186
187Select * from Proizvodi
188
189SELECT * FROM [dbo].[ErrorLog]
190-------------------
191----------------------
192--DROP PROCEDURE ProizvodDelete