- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQLQuery1.sql
More file actions
Latest commit
223 lines (190 loc) · 5.15 KB
/
Copy pathSQLQuery1.sql
File metadata and controls
223 lines (190 loc) · 5.15 KB
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
CREATETABLE tr_invoiceheader (
ih_seq INTNOTNULLIDENTITYPRIMARYKEY,
ih_number INTNOTNULL,
ih_clientname VARCHAR(100),
ih_total DECIMAL(18, 2),
ih_adddate DATETIMEDEFAULTGETDATE()
);
CREATETABLE tr_invoicedetail (
id_seq INTNOTNULLIDENTITYPRIMARYKEY,
id_itemname VARCHAR(100),
id_qty INT,
id_price DECIMAL(18, 2),
fk_ih_seq INT,
CONSTRAINT FK_InvoiceHeader FOREIGN KEY (fk_ih_seq)
REFERENCES tr_invoiceheader (ih_seq)
);
CREATETABLE tr_invseq (
is_seq INTNOTNULL
);
INSERTINTO tr_invseq (is_seq) VALUES (0);
---FIRST PROCEDURE
CREATE OR ALTERPROCEDURE spwv_tr_insertinvoiceheader
@ih_clientname VARCHAR(100),
@ih_total DECIMAL(18, 2)
AS
BEGIN
DECLARE @ih_number INT;
SET @ih_number = (SELECT is_seq +1FROM tr_invseq);
UPDATE tr_invseq SET is_seq = is_seq +1;
INSERTINTO tr_invoiceheader (ih_number, ih_clientname, ih_total, ih_adddate)
VALUES (@ih_number, @ih_clientname, @ih_total, GETDATE());
DECLARE @ih_seq INT;
SET @ih_seq =SCOPE_IDENTITY();
SELECT @ih_seq AS Ih_seq FROM tr_invoiceheader WHERE ih_seq = @ih_seq;
END;
go
-- Execute the stored procedure with sample data
DECLARE @result INT;
EXEC spwv_tr_insertinvoiceheader
@ih_clientname ='Sample Client',
@ih_total =0.0;
go
---SECONDE PROCEDURE
CREATE OR ALTERPROCEDURE spwv_tr_insertinvoicedetail
@fk_ih_seq INT,
@id_itemname VARCHAR(100),
@id_qty INT,
@id_price INT,
@id_seq INTOUTPUT
AS
BEGIN
SETNOCOUNTON;
DECLARE @new_id_seq INT;
BEGINTRANSACTION;
INSERTINTO tr_invoicedetail (fk_ih_seq, id_itemname, id_qty, id_price)
VALUES (@fk_ih_seq, @id_itemname, @id_qty, @id_price);
SET @new_id_seq =SCOPE_IDENTITY();
UPDATE tr_invoiceheader
SET ih_total = (SELECTSUM(id_qty * id_price) FROM tr_invoicedetail WHERE fk_ih_seq = @fk_ih_seq)
WHERE ih_seq = @fk_ih_seq;
COMMITTRANSACTION;
SET @id_seq = @new_id_seq;
END;
GO
DECLARE @new_id_seq INT;
EXEC spwv_tr_insertinvoicedetail
@fk_ih_seq =3,
@id_itemname ='Body Cream',
@id_qty =1,
@id_price =25,
@id_seq = @new_id_seq OUTPUT;
SELECT @new_id_seq AS NewDetailSequence;
go
---THIRD PROCEDURE
CREATE or alterPROCEDURE spwv_tr_updateclientname
@ih_seq INT,
@new_clientname VARCHAR(100),
@updated_id INTOUTPUT
AS
BEGIN
SETNOCOUNTON;
UPDATE tr_invoiceheader SET ih_clientname = @new_clientname WHERE ih_seq = @ih_seq;
SET @updated_id = @ih_seq;
END;
GO
EXEC spwv_tr_updateclientname
@ih_seq =3,
@new_clientname ='Malika';
go
---Fourth PROCEDURE
CREATE OR ALTERPROCEDURE spwv_tr_updateinvoicedetail
@id_seq INT,
@id_itemname VARCHAR(100),
@id_qty INT,
@id_price DECIMAL(18, 2),
@updated_total DECIMAL(18, 2) OUTPUT
AS
BEGIN
UPDATE tr_invoicedetail
SET id_itemname = @id_itemname,
id_qty = @id_qty,
id_price = @id_price
WHERE id_seq = @id_seq;
DECLARE @fk_ih_seq INT;
SELECT @fk_ih_seq = fk_ih_seq FROM tr_invoicedetail WHERE id_seq = @id_seq;
UPDATE tr_invoiceheader
SET ih_total = (SELECTSUM(id_qty * id_price) FROM tr_invoicedetail WHERE fk_ih_seq = @fk_ih_seq)
WHERE ih_seq = @fk_ih_seq;
SELECT @updated_total = ih_total FROM tr_invoiceheader WHERE ih_seq = @fk_ih_seq;
END;
GO
EXEC spwv_tr_updateinvoicedetail
@id_seq =2,
@id_itemname ='Dubai chocolate',
@id_qty =3,
@id_price =150;
go
---Fifth PROCEDURE
CREATE OR ALTERPROCEDURE spwv_tr_deleteinvoice
@ih_seq INT
AS
BEGIN
BEGINTRANSACTION;
DELETEFROM tr_invoicedetail WHERE fk_ih_seq = @ih_seq;
DELETEFROM tr_invoiceheader WHERE ih_seq = @ih_seq;
IF@@ROWCOUNT>0
BEGIN
COMMITTRANSACTION;
SELECT1AS Result;
END
ELSE
BEGIN
ROLLBACKTRANSACTION;
SELECT0AS Result;
END;
END;
GO
DECLARE @delete_invoice INT;
EXEC spwv_tr_deleteinvoice
@ih_seq =2 ,
@result = @delete_invoice OUTPUT;
SELECT @delete_invoice AS DeleteInvoice;
go
---Sixth PROCEDURE
CREATE or alterPROCEDURE spwv_tr_deleteinvoicedetail
@id_seq INT
AS
BEGIN
DELETEFROM tr_invoicedetail WHERE id_seq = @id_seq;
DECLARE @fk_ih_seq INT;
SELECT @fk_ih_seq = fk_ih_seq FROM tr_invoicedetail WHERE id_seq = @id_seq;
UPDATE tr_invoiceheader
SET ih_total = (SELECTCOALESCE(SUM(id_qty * id_price), 0) FROM tr_invoicedetail WHERE fk_ih_seq = @fk_ih_seq)
WHERE ih_seq = @fk_ih_seq;
SELECT ih_total AS UpdatedTotal FROM tr_invoiceheader WHERE ih_seq = @fk_ih_seq;
END;
GO
---Seventh PROCEDURE
CREATEPROCEDURE spwv_tr_selectallinvoiceheader
AS
BEGIN
SELECT*FROM tr_invoiceheader;
END;
go
EXEC spwv_tr_selectallinvoiceheader;
GO
---Eighth PROCEDURE
CREATEPROCEDURE spwv_tr_selectallinvoicedetailbyihseq
@ih_seq INT
AS
BEGIN
SELECT*FROM tr_invoicedetail WHERE fk_ih_seq = @ih_seq;
END;
GO
EXEC spwv_tr_selectallinvoicedetailbyihseq
@ih_seq =3;
go
---GetAllDetailsByIdSeq
CREATEPROCEDURE spwv_tr_selectalldetailbyidseq
@id_seq INT
AS
BEGIN
SELECT*FROM tr_invoicedetail WHERE id_seq = @id_seq;
END;
GO
EXEC spwv_tr_selectalldetailbyidseq
@id_seq =12;
go
SELECT*FROM tr_invoicedetail ;
SELECT*FROM tr_invoiceheader;