-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy path07_ProceduralProgramming_ProceduralStructures.sql
375 lines (218 loc) · 6.09 KB
/
07_ProceduralProgramming_ProceduralStructures.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
-- Script Temelleri
USE AdventureWorks
GO
DECLARE @Ident INT;
INSERT INTO Production.Location(Name, CostRate, Availability, ModifiedDate)
VALUES ('Name_Degeri', 25, 1.7, GETDATE());
SELECT @Ident = @@IDENTITY;
SELECT 'Eklenen satýr için identity deðeri : '+CONVERT(VARCHAR(3),@Ident);
-- Deðiþken Bildirimi
DECLARE @sayi1 INT;
DECLARE @sayi2 INT;
DECLARE @toplam INT = @sayi1 + @sayi2;
SELECT @toplam;
DECLARE @sayi1 INT = 12;
DECLARE @sayi2 INT = 12;
DECLARE @toplam INT = @sayi1 + @sayi2;
SELECT @toplam;
-- SET Ýfadesi Kullanýlarak Deðiþkenlere Deðer Atanmasý
DECLARE @Fiyat MONEY;
DECLARE @KdvOran MONEY;
DECLARE @KdvMiktar MONEY;
DECLARE @Toplam MONEY;
SET @Fiyat = 10;
SET @KdvOran = 0.18;
SET @KdvMiktar = @Fiyat * @KdvOran;
SET @Toplam = @Fiyat + @KdvMiktar;
SELECT @Toplam;
DECLARE @Fiyat MONEY; @KdvOran MONEY, @KdvMiktar MONEY, @Toplam MONEY;
DECLARE @EnYuksekFiyat MONEY;
SET @EnYuksekFiyat = (SELECT MAX(ListPrice) FROM Production.Product);
SELECT @EnYuksekFiyat AS EnYuksekFiyat;
SELECT ListPrice FROM Production.Product ORDER BY ListPrice DESC;
-- SELECT Ýfadesi Kullanýlarak Deðiþkenlere Deðer Atanmasý
DECLARE @EnYuksekFiyat MONEY;
SELECT @EnYuksekFiyat = MAX(ListPrice) FROM Production.Product;
SELECT @EnYuksekFiyat AS EnYuksekFiyat;
-- Batch'ler
-- SQLCMD
Sqlcmd
[-U login id] [-P password] [-S server] [-H hostname]
[-E trusted connection] [-d use database name] [-l login timeout]
[-N encrypt connection] [-C trust the server certificate]
[-t query timeout] [-h headers] [-s colseparator] [-w screen width]
[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
[-c cmdend] [-L[c] list servers[clean output]] [-q "cmdline query"]
[-Q "cmdline query" and exit] [-m errorlevel] [-V severitylevel]
[-W remove trailing spaces] [-u unicode output]
[-r[0|1] msgs to stderr] [-i inputfile] [-o outputfile]
[-f <codepage> | i:<codepage>[,o:<codepage>]]
[-k[1|2] remove[replace] control characters]
[-y variable length type display width]
[-Y fixed length type display width]
[-p[1] print statistics[colon format]]
[-R use client regional setting] [-b On error batch abort]
[-v var = "value"...]
[-X[1] disable commands[and exit with warning]]
[-? show syntax summary]
sqlcmd -S DIJIBIL-PC
sqlcmd -Ssunucu_ismi123 -Uuser_name123 -Ppwd123
SELECT @@SERVERNAME;
GO
SELECT @@VERSION;
GO
USE AdventureWorks
GO
SELECT ProductID, Name
FROM Production.Product
WHERE ProductID = 1;
-- Akýþ Kontrol Ýfadeleri
-- IF ... ELSE
DECLARE @val INT;
SELECT @val = COUNT(ProductID) FROM Production.Product;
IF @val IS NOT NULL
PRINT 'Toplam ' + CAST(@val AS VARCHAR) + ' kayýt bulundu.';
IF EXISTS (
SELECT *
FROM Sys.Sysobjects WHERE ID = Object_ID(N'[dbo].[Deneme]')
AND OBJECTPROPERTY(ID, N'IsUserTable') = 1
)
DROP TABLE dbo.Deneme;
CREATE TABLE dbo.Deneme
(
DeneID INT
);
DECLARE @val INT;
SELECT @val = COUNT(ProductID) FROM Production.Product
IF @val IS NULL
PRINT 'Kayýt Yok'
ELSE
PRINT 'Toplam ' + CAST(@val AS VARCHAR) + ' kayýt bulundu.';
-- ELSE Koþulu
DECLARE @val INT;
SET @val = 1;
IF @val = 1
PRINT 'Bir'
ELSE IF(@val = 2)
PRINT 'Ýki'
ELSE IF(@val = 3)
PRINT 'Üç'
ELSE IF(@val >= 4) AND (@val <= 8)
BEGIN
PRINT '4 - 8 arasýnda bir deðer';
PRINT '...'
END
ELSE
PRINT 'Tanýmlanamadý.';
-- Ýç Ýçe IF Kullanýmý
DECLARE @sayi INT;
SET @sayi = 5;
IF @sayi > 100
PRINT 'Bu sayý büyük.';
ELSE
BEGIN
IF @sayi < 10
PRINT 'Bu sayý küçük.';
ELSE
PRINT 'Ne küçük ne de büyük.';
END;
DECLARE @sayi INT;
SET @sayi = 4;
IF @sayi > 100
PRINT 'Bu sayý büyük.';
ELSE
BEGIN
IF @sayi < 10
IF @sayi = 1
PRINT 'Bir'
ELSE IF(@sayi = 2)
PRINT 'Ýki'
ELSE IF(@sayi = 3)
PRINT 'Üç'
ELSE IF(@sayi = 4)
BEGIN
PRINT 'Dört'
PRINT 'Hediyeyi kazandýn!'
END
ELSE IF(@sayi = 5)
PRINT 'Beþ'
ELSE
PRINT 'Bu sayý, 5 ve 10 arasýnda bir deðere sahip.';
ELSE
PRINT 'Ne küçük ne de büyük.';
END;
-- CASE Deyimi
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Yol'
WHEN 'M' THEN 'Dað'
WHEN 'T' THEN 'Gezi'
WHEN 'S' THEN 'Diðer Satýlýklar'
ELSE 'Satýlýk Deðil'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
SELECT JobTitle, BirthDate, Gender, Cinsiyet =
CASE
WHEN Gender = 'M' THEN 'Erkek'
WHEN Gender = 'F' THEN 'Kadýn'
END
FROM HumanResources.Employee;
-- WHILE Döngüsü
DECLARE @counter INT
SELECT @counter = 0
WHILE @counter < 5
BEGIN
SELECT '@counter deðeri : ' + CAST(@counter AS VARCHAR(1))
SELECT @counter = @counter + 1
END;
CREATE TABLE #gecici(
firmaID INT NOT NULL IDENTITY(1,1),
firma_isim VARCHAR(20) NULL
);
WHILE (SELECT count(*) FROM #gecici) < 10
BEGIN
INSERT #gecici VALUES ('dijibil'),('kodlab')
END;
SELECT * FROM #gecici;
-- CONTINUE Komutu
DECLARE @counter INT, @counter1 INT;
SELECT @counter = 0, @counter1 = 3;
WHILE @counter <> @counter1
BEGIN
SELECT CAST(@counter AS VARCHAR) + ' : ' + 'dijibil.com & kodlab.com';
SELECT @counter = @counter + 1;
END;
-- WAITFOR Ýfadesi
-- WAITFOR DELAY
BEGIN
WAITFOR DELAY '00:01';
EXECUTE sp_helpdb;
END;
-- WAITFOR TIME
DECLARE @counter INT, @counter1 INT;
SELECT @counter = 0, @counter1 = 3;
WHILE @counter <> @counter1
BEGIN
WAITFOR TIME '11:00'
SELECT CAST(@counter AS VARCHAR) + ' : ' + 'dijibil.com & kodlab.com';
SELECT @counter = @counter + 1;
END;
-- GOTO
DECLARE @Counter int;
SET @Counter = 1;
WHILE @Counter < 10
BEGIN
SELECT @Counter
SET @Counter = @Counter + 1
IF @Counter = 4 GOTO Etiket_Bir
IF @Counter = 5 GOTO Etiket_Iki
END
Etiket_Bir:
SELECT 'Etiket 1'
GOTO Etiket_Uc;
Etiket_Iki:
SELECT 'Etiket 2'
Etiket_Uc:
SELECT 'Etiket 3'