-
Notifications
You must be signed in to change notification settings - Fork 0
/
proj06_insert_procedures.sql
428 lines (374 loc) · 11.5 KB
/
proj06_insert_procedures.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
USE ALASKAAIRLINES
GO
-- Insert Stored Procedures --
CREATE PROCEDURE newAirplane
@A_Name VARCHAR(50),
@AType_Name VARCHAR(50),
@Date DATE,
@Hrs FLOAT
AS
DECLARE
@AType_ID INT
EXEC getAirplaneTypeID
@AT_Name = @AType_Name,
@AT_ID = @AType_ID OUTPUT
IF @AType_ID IS NULL
BEGIN
PRINT '@AType_ID cannot be empty - will fail in transaction';
THROW 51100, '@AType_ID cannot be null',1;
END
BEGIN TRAN T1
INSERT INTO tblAirplane
(AirplaneName, AirplaneTypeID, DateMade, TotalFlightHrs)
VALUES
(@A_Name, @AType_ID, @Date, @Hrs)
IF @@ERROR <> 0
BEGIN
PRINT 'There is an error - rolling back transaction T1'
ROLLBACK TRAN T1
END
ELSE
COMMIT TRAN T1
GO
CREATE PROCEDURE newEvent
@EventT_Name VARCHAR(50),
@Event_Name VARCHAR(50),
@Event_Descr VARCHAR(100)
AS
DECLARE
@EventT_ID INT
EXEC getEventTypeID
@ET_Name = @EventT_Name,
@ET_ID = @EventT_ID OUTPUT
IF @EventT_ID IS NULL
BEGIN
PRINT '@EventT_ID cannot be empty - will fail in transaction';
THROW 51300, '@EventT_ID cannot be null',1;
END
BEGIN TRAN T1
INSERT INTO tblEvent
(EventTypeID, EventName, EventDescr)
VALUES
(@EventT_ID, @Event_Name, @Event_Descr)
IF @@ERROR <> 0
BEGIN
PRINT 'There is an error - rolling back transaction T1'
ROLLBACK TRAN T1
END
ELSE
COMMIT TRAN T1
GO
CREATE PROCEDURE newEmployeePosition
@EF VARCHAR(100),
@EL VARCHAR(100),
@EP VARCHAR(100),
@PN VARCHAR(50)
AS
DECLARE @E_ID INT, @P_ID INT
EXEC getEmployeeID
@EmployeeFnamey = @EF,
@EmployeeLnamey = @EL,
@EmployeePhoney = @EP,
@EmployeeIDy = @E_ID OUTPUT
IF @E_ID IS NULL
BEGIN
PRINT '@E_ID IS NULL'
RAISERROR ('@E_ID CAN NOT BE NULL', 11, 1)
RETURN
END
EXEC getPositionID
@PositionNamey = @PN,
@PositionIDy = @P_ID OUTPUT
IF @P_ID IS NULL
BEGIN
PRINT '@P_ID IS NULL'
RAISERROR ('@P_ID CAN NOT BE NULL', 11, 1)
RETURN
END
BEGIN TRAN G1
INSERT INTO tblEmployee_Position(EmployeeID, PositionID)
VALUES (@E_ID, @P_ID)
IF @@ERROR <> 0
BEGIN
PRINT Error_Message()
ROLLBACK TRAN T1
END
ELSE
COMMIT TRAN T1
GO
CREATE PROCEDURE newCity
@SN VARCHAR(50),
@CN VARCHAR(100)
AS
DECLARE
@S_ID INT
EXEC getStateID
@StateNamey = @SN,
@StateID = @S_ID OUTPUT
IF @S_ID IS NULL
BEGIN
PRINT '@EventT_ID cannot be empty - will fail in transaction';
THROW 51300, '@EventT_ID cannot be null',1;
END
BEGIN TRAN T1
INSERT INTO tblCity
(StateID, CityName)
VALUES
(@S_ID, @CN)
IF @@ERROR <> 0
BEGIN
PRINT 'There is an error - rolling back transaction T1'
ROLLBACK TRAN T1
END
ELSE
COMMIT TRAN T1
GO
CREATE PROCEDURE newCustomer
@Customer_Fname VARCHAR(100),
@Customer_Lname VARCHAR(100),
@Customer_Phone VARCHAR(100),
@Customer_DOB DATE,
@Customer_Email VARCHAR(100),
@Customer_Street_Addr VARCHAR(100),
@Customer_City VARCHAR(100),
@Customer_State VARCHAR(100),
@Customer_Zip VARCHAR(100),
@CustomerTypeName VARCHAR(100)
AS
DECLARE @CustomerTypeID INT
EXEC getCustomerTypeID
@CustomerTName = @CustomerTypeName,
@CustomerT_ID = @CustomerTypeID OUTPUT
-- Error handle @CustomerTypeID in case if it's NULL/ empty
IF @CustomerTypeID IS NULL
BEGIN
PRINT '@CustomerTypeID is empty and will fail in the transaction';
THROW 51000, '@CustomerTypeID cannot be NULL', 1;
END
BEGIN TRAN G1
INSERT INTO tblCustomer (CustomerTypeID, CustomerFname, CustomerLname, CustomerPhone, CustomerDOB, CustomerEmail,
CustomerStreetAddr, CustomerCity, CustomerState, CustomerZip)
VALUES (@CustomerTypeID, @Customer_Fname, @Customer_Lname, @Customer_Phone, @Customer_DOB, @Customer_Email,
@Customer_Street_Addr, @Customer_City, @Customer_State, @Customer_Zip)
IF @@ERROR <> 0
BEGIN
PRINT 'There is an error; need to rollback this transaction'
ROLLBACK TRAN G1
END
ELSE
COMMIT TRAN G1
GO
CREATE PROCEDURE newOrder
@Customer_FirstName VARCHAR(100),
@Customer_LastName VARCHAR(100),
@CustomerDOB DATE,
@Order_Date DATE
AS
DECLARE @CustomerID INT
EXEC getCustomerID
@Customer_Fname = @Customer_FirstName,
@Customer_Lname = @Customer_LastName,
@Customer_DOB = @CustomerDOB,
@Customer_ID = @CustomerID OUTPUT
-- Error handle @CustomerID in case if it's NULL/ empty
IF @CustomerID IS NULL
BEGIN
PRINT '@CustomerID is empty and will fail in the transaction';
THROW 51000, '@CustomerID cannot be NULL', 1;
END
BEGIN TRAN G1
INSERT INTO tblOrder (CustomerID, OrderDate)
VALUES (@CustomerID, @Order_Date)
IF @@ERROR <> 0
BEGIN
PRINT 'There is an error; need to rollback this transaction'
ROLLBACK TRAN G1
END
ELSE
COMMIT TRAN G1
GO
CREATE PROCEDURE newFee
@FeeName VARCHAR(50),
@FeeAmount FLOAT,
@FeeTypeName VARCHAR(50)
AS
DECLARE @FeeTypeID INT
EXEC getFeeTypeID
@Fee_Type_Name = @FeeTypeName,
@Fee_Type_ID = @FeeTypeID OUTPUT
-- Error handle @FeeTypeID in case if it's NULL/ empty
IF @FeeTypeID IS NULL
BEGIN
PRINT '@FeeTypeID is empty and this will cause the transaction to be failed';
THROW 51000, '@FeeTypeID cannot be NULL', 1;
END
BEGIN TRAN G1
INSERT INTO tblFee (FeeName, FeeTypeID, FeeAmount)
VALUES (@FeeName, @FeeTypeID, @FeeAmount)
IF @@ERROR <> 0
BEGIN
PRINT 'There is an error; need to rollback this transaction'
ROLLBACK TRAN G1
END
ELSE
COMMIT TRAN G1
GO
CREATE PROCEDURE newFlight
@F_Num INT,
@A_Namea VARCHAR(50),
@FlightType_Name_a VARCHAR(20),
@AirportLtrsD VARCHAR(5),
@AirportLtrsA VARCHAR(5),
@ArrivalTimea TIME,
@DepartureTimea TIME,
@FlightHrs_a INT
AS
DECLARE @AID_a INT, @FLTID_a INT, @DEP_IDa INT, @ARR_IDa INT
EXEC getAirplaneID
@AName = @A_Namea,
@AirplaneID = @AID_a OUTPUT
-- Error handle @AID_a in case if it's NULL/empty
IF @AID_a IS NULL
BEGIN
PRINT '@AID_a is empty and this will cause the transaction to be failed';
THROW 51000, '@AID_a cannot be NULL', 1;
END
EXEC getFlight_TypeID
@FlightType_Name = @FlightType_Name_a,
@FlightType_ID = @FLTID_a OUTPUT
-- Error handle @FLTID_a in case if it's NULL/empty
IF @FLTID_a IS NULL
BEGIN
PRINT '@FLTID_a is empty and this will cause the transaction to be failed';
THROW 51000, '@FLTID_a cannot be NULL', 1;
END
EXEC getAirportID
@AirportLtrs = @AirportLtrsD,
@AirportID = @DEP_IDa OUTPUT
-- Error handle @DEP_ID in case if it's NULL/empty
IF @DEP_IDa IS NULL
BEGIN
PRINT '@DEP_IDa is empty and this will cause the transaction to be failed';
THROW 51000, '@DEP_IDa cannot be NULL', 1;
END
EXEC getAirportID
@AirportLtrs = @AirportLtrsA,
@AirportID = @ARR_IDa OUTPUT
-- Error handle @ARR_IDa in case if it's NULL/empty
IF @ARR_IDa IS NULL
BEGIN
PRINT '@ARR_IDa is empty and this will cause the transaction to be failed';
THROW 51000, '@ARR_IDa cannot be NULL', 1;
END
BEGIN TRAN T1
INSERT INTO tblFlight
(FlightNum, AirplaneID, FlightTypeID, DepartureAirportID, ArrivalAirportID, ArrivalTime, DepartureTime, FlightHrs)
VALUES
(@F_Num, @AID_a, @FLTID_a, @DEP_IDa, @ARR_IDa, @ArrivalTimea, @DepartureTimea, @FlightHrs_a)
IF @@ERROR <> 0
BEGIN
PRINT 'There is an error - rolling back transaction T1'
ROLLBACK TRAN T1
END
ELSE
COMMIT TRAN T1
GO
CREATE PROCEDURE newBooking
@Booking_Name VARCHAR(50),
@PassengerFname_ VARCHAR(100),
@PassengerLname_ VARCHAR(100),
@PassengerBirth_ DATE,
@F_Num INT,
@FeeName_ VARCHAR(20),
@CustomerFname_ VARCHAR(100),
@CustomerLname_ VARCHAR(100),
@OrderDate_ DATE,
@bookingAmount FLOAT
AS
DECLARE
@P_ID INT, @F_ID INT, @Fe_ID INT, @O_ID INT
EXEC getPassengerID
@Passenger_Fname = @PassengerFname_,
@Passenger_Lname = @PassengerLname_,
@Passenger_Birth = @PassengerBirth_,
@Passenger_ID = @P_ID OUTPUT
IF @P_ID IS NULL
BEGIN
PRINT '@P_ID cannot be empty - will fail in transaction';
THROW 51100, '@P_ID cannot be null',1;
END
EXEC getFlightID
@FNum = @F_Num,
@FlightID = @F_ID OUTPUT
IF @F_ID IS NULL
BEGIN
PRINT '@F_ID cannot be empty - will fail in transaction';
THROW 51200, '@F_ID cannot be null',1;
END
EXEC getFeeID
@FeeName = @FeeName_,
@FeeID = @Fe_ID OUTPUT
IF @Fe_ID IS NULL
BEGIN
PRINT '@Fe_ID cannot be empty - will fail in transaction';
THROW 51200, '@Fe_ID cannot be null',1;
END
EXEC getOrderID
@CustomerFname = @CustomerFname_,
@CustomerLname = @CustomerLname_,
@OrderDate = @OrderDate_,
@OrderID = @O_ID OUTPUT
IF @O_ID IS NULL
BEGIN
PRINT '@O_ID cannot be empty - will fail in transaction';
THROW 51200, '@O_ID cannot be null',1;
END
BEGIN TRAN T1
INSERT INTO tblBooking
(BookingName, PassengerID, FlightID, FeeID, OrderID, BookingAmount)
VALUES
(@Booking_Name, @P_ID, @F_ID, @Fe_ID, @O_ID, @bookingAmount)
IF @@ERROR <> 0
BEGIN
PRINT 'There is an error - rolling back transaction T1'
ROLLBACK TRAN T1
END
ELSE
COMMIT TRAN T1
GO
CREATE PROCEDURE newBookingFee
@Booking_Name VARCHAR(50),
@Fee_Name VARCHAR(50)
AS
DECLARE @BID_ INT, @F_ID_ INT
EXEC getBookingID
@BName = @Booking_Name,
@BookingID = @BID_ OUTPUT
-- Error handle @PID_ in case if it's NULL/empty
IF @BID_ IS NULL
BEGIN
PRINT '@BID_ is empty and this will cause the transaction to be failed';
THROW 51000, '@BID_ cannot be NULL', 1;
END
EXEC getFeeID
@FeeName = @Fee_Name,
@FeeID = @F_ID_ OUTPUT
-- Error handle @F_ID_ in case if it's NULL/empty
IF @F_ID_ IS NULL
BEGIN
PRINT '@F_ID_ is empty and this will cause the transaction to be failed';
THROW 51000, '@F_ID_ cannot be NULL', 1;
END
BEGIN TRAN T1
INSERT INTO tblBooking_Fee
(BookingID, FeeID)
VALUES
(@BID_, @F_ID_)
IF @@ERROR <> 0
BEGIN
PRINT 'There is an error - rolling back transaction T1'
ROLLBACK TRAN T1
END
ELSE
COMMIT TRAN T1
GO