Деректер қорын басқарудың заманауи жүйелері



бет2/3
Дата01.04.2023
өлшемі352,07 Kb.
#78205
1   2   3
Шартты өрнектер
Шартты әрекеттерді орындау үшін IF өрнегі қолданылады ... ELSE. SQL Server IF кілт сөзінен кейін өрнекті есептейді. Егер бұл рас болса, онда нұсқаулар IF кілт сөзінен кейін орындалады. Егер шарт жалған болса, онда нұсқаулар ELSE кілт сөзінен кейін орындалады.
Егер IF немесе ELSE-ден кейін Нұсқаулық блогы болса, онда бұл блок BEGIN және END кілт сөздерінің арасында болады:

1
2
3
4

IF шарт
{инструкция|BEGIN...END}
[ELSE
{инструкция|BEGIN...END}]

ELSE өрнегі міндетті емес және оны елемеуге болады.
Мысалы, бізде келесі кестелер болсын:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

CREATE TABLE Products
(
Id INT IDENTITY PRIMARY KEY,
ProductName NVARCHAR(30) NOT NULL,
Manufacturer NVARCHAR(20) NOT NULL,
ProductCount INT DEFAULT 0,
Price MONEY NOT NULL
);
CREATE TABLE Customers
(
Id INT IDENTITY PRIMARY KEY,
FirstName NVARCHAR(30) NOT NULL
);
CREATE TABLE Orders
(
Id INT IDENTITY PRIMARY KEY,
ProductId INT NOT NULL REFERENCES Products(Id) ON DELETE CASCADE,
CustomerId INT NOT NULL REFERENCES Customers(Id) ON DELETE CASCADE,
CreatedAt DATE NOT NULL,
ProductCount INT DEFAULT 1,

Тапсырыс кестесі тапсырыстарды, ал CreatedAt бағаны Тапсырыс күнін білдіреді. Соңғы 10 күнде тапсырыс болғанын анықтау керек:
Оған ELSE өрнегін қосатын болсақ:

1
2
3
4
5
6
7
8

DECLARE @lastDate DATE
SELECT @lastDate = MAX(CreatedAt) FROM Orders
IF DATEDIFF(day, @lastDate, GETDATE()) > 10
PRINT 'За последние десять дней не было заказов'
ELSE
PRINT 'За последние десять дней были заказы'

Егер IF немесе ELSE-ден кейін екі немесе одан да көп нұсқаулар болса, онда олар BEGIN...END блогында орналасады:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

DECLARE @lastDate DATE, @count INT, @sum MONEY
SELECT @lastDate = MAX(CreatedAt),
@count = SUM(ProductCount) ,
@sum = SUM(ProductCount * Price)
FROM Orders
IF @count > 0
BEGIN
PRINT 'Датапоследнегозаказа: ' + CONVERT(NVARCHAR, @lastDate)
PRINT 'Продано ' + CONVERT(NVARCHAR, @count) + ' единиц(ы)'
PRINT 'Наобщуюсумму ' + CONVERT(NVARCHAR, @sum)
END;
ELSE
PRINT 'Заказы в базе данных отсутствуют'

 
Циклдар
T-SQL-де қайталанатын операцияларды орындау үшін циклдар қолданылады. Атап айтқанда, T-SQL-де WHILE циклі бар. Бұл цикл белгілі бір шарт шын болған кезде белгілі бір әрекеттерді орындайды.

1
2

WHILE шарт
{инструкция|BEGIN...END}

Егер блокта бірнеше нұсқауларды орналастыру қажет болса, онда олардың барлығы BEGIN...END блогына орналастырылады.
Мысалы, санның факторлық мәнін есептейміз:

1
2
3
4
5
6
7
8
9
10
11

DECLARE@number INT, @factorial INT
SET@factorial = 1;
SET@number = 5;
WHILE @number > 0
BEGIN
SET@factorial = @factorial * @number
SET@number = @number - 1
END;
PRINT @factorial

Яғни, бұл жағдайда @number айнымалысы 0-ге тең болғанша, цикл жалғасады. @Number 5 болғандықтан, цикл бес өту жасайды. Циклдің әр өтуі Итерация деп аталады. Әр итерацияда @factorial және @number айнымалыларының мәні қайта орнатылады.


Достарыңызбен бөлісу:
1   2   3




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет